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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

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

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

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

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

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

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

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

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

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

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

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

大部分延時(shí)應(yīng)用過程中還是會(huì)有些誤差的,這個(gè)是在多個(gè)小的誤差基礎(chǔ)上疊加的,是可以接受的。

責(zé)任編輯:haq

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

    關(guān)注

    6037

    文章

    44569

    瀏覽量

    636143
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4966

    瀏覽量

    87645
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7606

    瀏覽量

    137052

原文標(biāo)題:?jiǎn)纹瑱C(jī)延時(shí)的兩種實(shí)現(xiàn)方法

文章出處:【微信號(hào):gh_e7f294a514ca,微信公眾號(hào):?jiǎn)纹瑱C(jī)匠人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    單片機(jī)怎么寫入程序

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

    單片機(jī)的中斷機(jī)制

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

    單片機(jī)燒錄程序用什么軟件

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

    單片機(jī)燒錄程序的基本步驟是什么

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

    揭秘:單片機(jī)硬件與軟件延時(shí)之大不同!

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

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

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

    如何系統(tǒng)、科學(xué)地自學(xué)單片機(jī)?

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

    單片機(jī)的最小系統(tǒng)由什么組成 單片機(jī)的最小系統(tǒng)包括哪些

    單片機(jī)(Microcontroller Unit,MCU)的最小系統(tǒng)包括以下幾個(gè)主要組成部分: 單片機(jī)芯片:單片機(jī)是整個(gè)最小系統(tǒng)的核心部分,它集成了中央處理器(Central Processing
    的頭像 發(fā)表于 02-02 11:27 ?1.1w次閱讀

    基于單片機(jī)控制的交通燈設(shè)計(jì)

    本課程設(shè)計(jì)是在學(xué)完單片機(jī)原理及課程之后綜合利用所學(xué)單片機(jī)知識(shí)完成一個(gè)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)并在實(shí)驗(yàn)室實(shí)現(xiàn)。
    的頭像 發(fā)表于 01-22 15:31 ?2242次閱讀
    基于<b class='flag-5'>單片機(jī)</b>控制的交通燈設(shè)計(jì)

    PLC與單片機(jī)的差別是什么?

    單片機(jī)不能完全替代PLC 。雖然單片機(jī)可以通過編程實(shí)現(xiàn)類似的功能,但是在可靠性和穩(wěn)定性方面相對(duì)來說稍遜于PLC。
    發(fā)表于 01-16 13:51 ?632次閱讀

    單片機(jī)怎么能夠與手機(jī)實(shí)現(xiàn)遠(yuǎn)程通訊呢?

    單片機(jī)怎么能夠與手機(jī)實(shí)現(xiàn)遠(yuǎn)程通訊呢? 隨著物聯(lián)網(wǎng)的快速發(fā)展,單片機(jī)作為物聯(lián)網(wǎng)應(yīng)用中最常見的控制器,與手機(jī)實(shí)現(xiàn)遠(yuǎn)程通訊已成為一種趨勢(shì)。通過單片機(jī)
    的頭像 發(fā)表于 01-15 14:59 ?3295次閱讀

    基于單片機(jī)的汽車防碰撞系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于單片機(jī)的汽車防碰撞系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).rar》資料免費(fèi)下載
    發(fā)表于 01-12 10:48 ?24次下載