日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]單片機精確毫秒延時函數(shù)

對于需要精確延時的應用場合,需要精確知道延時函數(shù)的具體延時時間。以C語言編寫的單片機延時函數(shù)網(wǎng)上有兩個不同的版本(都說是延時n毫秒),分別如下:

void delay(uint x) //延時X毫秒
{
uint y,z;
for(z=x;z>0;z--)
for(y=110;y>0;y--);
}

void delay_ms(uint n)   //延時n毫秒
{
   uchar i;
   while(n--)
   {
     for(i=0;i<120;i++);
}
}

上述兩個函數(shù)的實現(xiàn)方法是一樣的,只是給的時間常數(shù)不同,一個是110,另一個是120。近來工作因為對時間的精度要求很高,就特地驗證了下這兩個函數(shù)運行時所用的時間。 主程序為:

void main(void)
{
   delay(1);
}

反匯編之后(推薦用C51智能反編譯器,不過要手工加上ORG地址和END結束符):

標號                   指令                                    地址        機器碼        機器周期

                         ORG 0000H
Q0000:             LJMP Q0021                        ;0000   02 00 21
;==========================================================================
                   ORG   0003H
Q0003:             SETB C                                ;0003   D3                       1
                   MOV   A,R7                                  ;0004   EF                        1
                   SUBB A,#00H                            ;0005   94 00                   1
                   MOV   A,R6                                 ;0007   EE                        1
                   SUBB A,#00H                             ;0008   94 00                    1
                   JC    Q0020                                 ;000A   40 14                    2
                   MOV   R5,#6EH                             ;000C   7D 6E                 1
                   MOV   R4,#00H                            ;000E   7C 00                   1
Q0010:          MOV   A,R5                            ;0010   ED                            1
                   DEC   R5                                    ;0011   1D                           1
                   JNZ   Q0015                                ;0012   70 01                      2
                   DEC   R4                                    ;0014   1C                          1
Q0015:             MOV   A,R5                          ;0015   ED                          1
                   ORL   A,R4                                ;0016   4C                           1
                   JNZ   Q0010                              ;0017   70 F7                          2
                   MOV   A,R7                               ;0019   EF                              1
                   DEC   R7                                  ;001A   1F                              1
                   JNZ   Q0003                             ;001B   70 E6                          2
                   DEC   R6                                  ;001D   1E                               1
                   SJMP Q0003                            ;001E   80 E3                          2
Q0020:             RET                                     ;0020   22                                 2
;====================RESET 00-7F AND SET SP=07H============================
                         ORG   0021H
Q0021:             MOV   R0,#7FH                         ;0021   78 7F
                        CLR   A                                       ;0023   E4
Q0024:             MOV   @R0,A                           ;0024   F6
                         DJNZ R0,Q0024                       ;0025   D8 FD
                        MOV   SP,#07H                        ;0027   75 81 07
                         LJMP Q002D                            ;002A   02 00 2D
;====================MAIN PROGRAM==========================================
                       ORG   002DH
Q002D:             MOV   R7,#01H                         ;002D   7F 01             1
                       MOV   R6,#00H                        ;002F   7E 00               1
                          LJMP Q0003                             ;0031   02 00 03          2
;==========================================================================
                        END

單步執(zhí)行可以跟蹤程序的運行,給個最終的結果就是總的執(zhí)行機器周期數(shù)為 :

第一個函數(shù):4+9+8*110+4+9=906

第二個函數(shù):4+9+8*120+4+9=986

如果單片機的晶振是12M,則一個機器周期的時間為12/(12*10e6)=1us

可見第二個程序更接近1ms(0.986us)的時間,第一個是0.906us

當晶振是11.05926M時,第一個延時函數(shù)的精確延時時間是983us,第二個是1069.8us,可見第一個函數(shù)的延時時間更精確一些。

而且延時時間越長,誤差就越大。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

在單片機通信系統(tǒng)中,數(shù)據(jù)幀是實現(xiàn)設備間可靠對話的核心載體。不同于網(wǎng)絡通信中成熟的TCP/IP協(xié)議,單片機通信往往需要自定義數(shù)據(jù)幀格式,而幀頭、幀尾與校驗機制則是保障數(shù)據(jù)傳輸準確性的三大關鍵。

關鍵字: 單片機 數(shù)據(jù)幀

隨著嵌入式技術的不斷發(fā)展,時序分析工具和方法也在不斷進步,未來將朝著智能化、自動化的方向發(fā)展,為開發(fā)者提供更高效的調(diào)試手段。但無論技術如何發(fā)展,扎實的時序分析基礎都是嵌入式開發(fā)者不可或缺的能力,只有深入理解通信時序的本質(zhì)...

關鍵字: 時序 單片機

在嵌入式系統(tǒng)設計中,不同架構、不同廠商的單片機協(xié)同工作早已成為常態(tài)。從8位的51系列到32位的STM32,從精簡指令集的PIC到復雜指令集的AVR,這些性能各異的單片機如何突破硬件差異實現(xiàn)數(shù)據(jù)交互,是嵌入式開發(fā)中的核心課...

關鍵字: 嵌入式 單片機

在嵌入式系統(tǒng)開發(fā)中,單片機的時鐘系統(tǒng)是整個系統(tǒng)的"心臟",所有的指令執(zhí)行、外設操作、定時器中斷都依賴于精準的時鐘信號。但在實際開發(fā)過程中,很多開發(fā)者都會遇到單片機時鐘不準的問題,表現(xiàn)為定時器計時偏差、UART通信波特率錯...

關鍵字: 控制系統(tǒng) 單片機

在單片機開發(fā)與調(diào)試過程中,復位電路作為保障芯片正常啟動的核心模塊,其穩(wěn)定性直接影響程序燒錄與系統(tǒng)運行。實際應用中,不少開發(fā)者會遇到“接穩(wěn)壓電源可正常燒錄,接入電池后卻無法燒錄程序”的故障,此類問題多與復位電路設計、電池供...

關鍵字: 單片機 復位電路 時序匹配

在單片機的世界里,“字節(jié)”(Byte)是一個貫穿始終的核心概念。從存儲數(shù)據(jù)到執(zhí)行指令,從變量定義到外設通信,字節(jié)無處不在。很多初學者在學習單片機時,往往更關注復雜的程序邏輯和外設驅動,卻忽略了字節(jié)這個基礎知識點,導致在后...

關鍵字: 單片機 字節(jié)

在單片機的數(shù)字邏輯中,我們通常最關注的是高電平和低電平兩種狀態(tài),它們構成了二進制數(shù)字世界的基礎。然而,除了這兩種狀態(tài)之外,還有一種至關重要但常常被忽視的狀態(tài)——高阻態(tài)(High Impedance State)。高阻態(tài)就...

關鍵字: 單片機 高阻態(tài)

對于PIC入門者來說,不需要盲目追求高端開發(fā)板,一塊功能均衡、資料豐富的入門款就能滿足需求。比如Microchip官方推出的PIC16F84A開發(fā)板,它搭載經(jīng)典的8位PIC內(nèi)核,引腳布局清晰,自帶LED、按鍵等基礎外設,...

關鍵字: PIC 單片機

該低功耗器件支持5V運行,在實現(xiàn)高性能的同時,能有效保障系統(tǒng)簡潔性與成本效益

關鍵字: MCU 單片機 工業(yè)自動化
關閉