衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

單片機延時是怎么實現(xiàn)的

單片機匠人 ? 來源:張飛實戰(zhàn)電子 ? 作者:蔡琰老師 ? 2021-10-12 17:18 ? 次閱讀

單片機延時大家程序中都會用到,那么怎么實現(xiàn)呢?通常我們有軟件實現(xiàn),就是語句循環(huán);或者硬件實現(xiàn),通過定時器/計數(shù)器。

對于精準而言,從實現(xiàn)語言方向看,底層語言有匯編C語言,通常我們單片機程序用C語言比較多,但是相對而言匯編更精準。從實現(xiàn)方式來看,有軟件方式和硬件方式,那么對于C語言延時的方法哪種更精準呢?自然是定時器計數(shù)器的方式了,為什么呢?一起來看看吧。

1、軟件延時-循環(huán)實現(xiàn)

在很多時候,定時器會被用作其他用途,不方便再用作計數(shù)了,所以這個時候就只能用軟件方法延時。軟件方法延時就是循環(huán)語句來實現(xiàn)。

通過使用帶_NOP_();語句的函數(shù)實現(xiàn),定義一系列不同的延時函數(shù)。我們都知道C語言最終通過編譯生成匯編,所以一條C語言可能會反匯編成多條匯編語句,每條匯編指令都有指令周期,比如我們時鐘是8Mhz的,那么一個指令周期就是125ns,那么NOP是一個空指令,占用一個指令周期。假如我們定義一個1ms的延時函數(shù),那么函數(shù)里面全部用NOP指令也需要循環(huán)多次,那么循環(huán)語句也可能會有多條匯編實現(xiàn),具體的根據(jù)編譯器不同也不同,我們就很難精確的計算出實際的延時,那么計算大概也可以,然后最有效直接的方法就是通過示波器去測試然后再去調(diào)整循環(huán)數(shù)。不要太糾結計算數(shù)值,可以調(diào)試的。示波器測試方法更簡單,在延時前后加一個引腳的輸出反轉信號就可以了。

到這里大家是不是覺得其實用匯編寫延時函數(shù)就能做到精確了呢?相比較C語言,的確是匯編可以做到很精確的數(shù)值,因為我們可以確定每條指令的指令周期是多少,根據(jù)延時函數(shù)用到的所有指令都可以計算出來,最終計算得出比較精準的循環(huán)數(shù)值。

2、硬件延時-定時器/計數(shù)器實現(xiàn)

當然在大多情況下,我們還是會選擇定時器來做延時處理,首先我們可以通過時鐘配置定時器工作,獲得精準計數(shù),具體精準程度要看給定時器用的時鐘了,內(nèi)部時鐘或者外部晶振的精度。可以實現(xiàn)極短時間的精確延時。

在實際應用中,定時常采用中斷方式,通過對定時器的配置,獲得中斷方式和定時時間,然后通過判斷計數(shù)值獲得想要的延時效果,用這種方法從程序的執(zhí)行效率和穩(wěn)定性方面考慮都是最佳的方案。大部分項目主循環(huán)需要處理很多事情,如果在主循環(huán)中用軟件延時方法難免需要等待過程,尤其是長延時的時候不能處理其他,如果好多外設在工作,會造成通信不上或者響應不及時。

總結:大部分程序中我們可以寫個小的軟件延時,必須等待的小延時可以用軟件的實現(xiàn),就可以省去對延時時間的判斷了,等待就可以了。但是需要測試延時時間是否準確,或者可以直接用匯編寫延時函數(shù)。硬件延時也有必要實現(xiàn),根據(jù)實際需求去應用。

大部分延時應用過程中還是會有些誤差的,這個是在多個小的誤差基礎上疊加的,是可以接受的。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44622

    瀏覽量

    638530
  • 軟件
    +關注

    關注

    69

    文章

    5009

    瀏覽量

    88067
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137712

原文標題:單片機延時的兩種實現(xiàn)方法

文章出處:【微信號:gh_e7f294a514ca,微信公眾號:單片機匠人】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機中斷技術詳解

    在現(xiàn)代電子設備中,單片機作為控制核心發(fā)揮著舉足輕重的作用。而在其高效運作的背后,中斷機制是推動單片機實現(xiàn)實時響應與高效執(zhí)行的關鍵因素。本文將深入探討單片機中的中斷概念、中斷系統(tǒng)的結構、
    的頭像 發(fā)表于 02-02 15:57 ?131次閱讀

    單片機Debug工具性能對比 單片機調(diào)試常用命令

    單片機(Microcontroller Unit, MCU)調(diào)試是嵌入式開發(fā)中的一個重要環(huán)節(jié),它幫助開發(fā)者發(fā)現(xiàn)和修復代碼中的錯誤,優(yōu)化程序性能。不同的單片機和開發(fā)環(huán)境可能使用不同的調(diào)試工具和命令
    的頭像 發(fā)表于 12-19 09:56 ?472次閱讀

    使用單片機實現(xiàn)直流電機的PWM調(diào)速控制原理圖

    使用單片機實現(xiàn)直流電機的PWM調(diào)速控制
    發(fā)表于 12-10 15:29 ?0次下載

    上位如何實現(xiàn)發(fā)送參數(shù)給單片機單片機保存接收的參數(shù)重復運行指定的功能

    ,類似于設定單片機運行指定功能時所需要的參數(shù): 舉例:名稱,功能,上限,下限,參數(shù)一,參數(shù)二,...,延時。一行代表一個功能。 上位機設定好參數(shù)通過串口下發(fā)給單片機單片機接收到數(shù)據(jù)
    發(fā)表于 12-04 08:19

    單片機編程語言有哪些選擇

    單片機(Microcontroller Unit,MCU)編程是指為單片機編寫程序的過程,這些程序控制單片機的行為和功能。單片機廣泛應用于嵌入式系統(tǒng),如家用電器、汽車電子、工業(yè)控制等領
    的頭像 發(fā)表于 11-01 14:13 ?946次閱讀

    如何實現(xiàn)51單片機與PC的串行通信

    51單片機與PC的串行通信是一種常見的通信方式,它允許單片機通過串行接口與PC進行數(shù)據(jù)交換。這種通信方式在嵌入式系統(tǒng)、工業(yè)控制、物聯(lián)網(wǎng)等領域有著廣泛的應用。以下是
    的頭像 發(fā)表于 10-21 11:35 ?1288次閱讀

    單片機怎么寫入程序

    單片機(Microcontroller Unit,MCU)是一種集成電路芯片,它將計算機的CPU、存儲器、輸入/輸出接口等功能集成在一個芯片上。單片機廣泛應用于嵌入式系統(tǒng)和物聯(lián)網(wǎng)設備中。編寫單片機
    的頭像 發(fā)表于 10-21 11:21 ?926次閱讀

    單片機的中斷機制

    單片機的中斷機制是一種重要的處理方式,它允許單片機在執(zhí)行主程序的過程中,能夠暫停當前任務,轉而處理外部或內(nèi)部緊急事件。這種機制極大地提高了系統(tǒng)的響應速度和處理能力,使得單片機在各種應用領域中得到廣泛應用。以下是對
    的頭像 發(fā)表于 10-17 18:03 ?965次閱讀

    單片機燒錄程序用什么軟件

    單片機燒錄程序是單片機開發(fā)過程中的一個重要環(huán)節(jié),涉及到將編寫好的程序代碼通過燒錄器寫入單片機的ROM中,以實現(xiàn)單片機的控制。 燒錄器的類型
    的頭像 發(fā)表于 09-02 10:05 ?1651次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序是單片機開發(fā)過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸?shù)?b class='flag-5'>單片機內(nèi)部的存儲器中,使單片機能夠按照預定的邏輯執(zhí)行任務。 一、硬件準備
    的頭像 發(fā)表于 09-02 09:47 ?1436次閱讀

    揭秘:單片機硬件與軟件延時之大不同!

    在嵌入式項目中,軟件開發(fā)基本上都會使用到延時,那么,該用軟件延時還是硬件延時?它們又有什么區(qū)別呢?今天就來講講關于硬件延時和軟件延時的內(nèi)容,
    的頭像 發(fā)表于 07-25 08:11 ?953次閱讀
    揭秘:<b class='flag-5'>單片機</b>硬件與軟件<b class='flag-5'>延時</b>之大不同!

    藍牙模塊如何實現(xiàn)單片機和手機端數(shù)據(jù)互傳

    藍牙模塊實現(xiàn)單片機和手機端數(shù)據(jù)互傳的過程可以分為以下幾個步驟: 硬件準備 : 確保你有一個支持藍牙通信的單片機開發(fā)板,如Arduino、Raspberry Pi等。 準備一個兼容的藍牙模塊,如
    的頭像 發(fā)表于 07-24 17:59 ?2888次閱讀
    藍牙模塊如何<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>單片機</b>和手機端數(shù)據(jù)互傳

    UCGUI單片機源碼

    UCGUI單片機源碼
    發(fā)表于 07-04 17:11 ?1次下載

    如何系統(tǒng)、科學地自學單片機

    很多初學者都會面臨這個問題,我想學習單片機、我也想學好單片機、我也想系統(tǒng)地學習單片機,但是單片機涉及到的學科多且雜根本不是三天兩天就能學完的,很多人都逃脫不了從入門到放棄的怪圈?那么我
    的頭像 發(fā)表于 03-28 08:03 ?1193次閱讀
    如何系統(tǒng)、科學地自學<b class='flag-5'>單片機</b>?

    fpga能代替單片機

    FPGA(現(xiàn)場可編程門陣列)和單片機在功能和應用上各有特點和優(yōu)勢,因此FPGA并不能完全代替單片機
    的頭像 發(fā)表于 03-27 14:29 ?997次閱讀
    鑫鑫百家乐官网的玩法技巧和规则| 真人百家乐赌场娱乐网规则| 天健棋牌大厅下载| 网上百家乐官网打牌| 百家乐看大小路| 真人百家乐官网试玩账号| 百家乐客户端软件| 澳门玩大小| 新澳博百家乐官网的玩法技巧和规则 | 百家乐官网棋牌交| 百家乐追号工具| 百家乐官网马宝| 全讯网最方便的新全讯网| 网络百家乐官网的信誉| 全讯网官方网站| 哪家百家乐官网最好| 澳门顶级赌场百家乐的玩法技巧和规则 | 丽景湾百家乐的玩法技巧和规则| 百家乐官网稳中一注法| 赌场百家乐怎么破解| 百家乐官网现金网平台排行榜| 威尼斯人娱乐场色碟| 菲律宾百家乐官网赌场娱乐网规则| 大发888娱乐真钱游戏 官方| 做生意门面朝向风水| 博九娱乐城| 百家乐游乐园| 百家乐官网玩法介绍图片| 大发888娱乐城技巧| 做生意放什么东西招财| 定安县| 电子百家乐技巧| 百家乐官网庄闲的几率| 大庆冠通棋牌世界| 澳门百家乐官网网络游戏信誉怎么样 | 百家乐官网体育宝贝| 财富百家乐的玩法技巧和规则 | 百家乐起步多少| 普安县| 全讯网新2网址| 百家乐现金网平台|