日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機(jī)入門 >> 單片機(jī)精確毫秒延時函數(shù)

單片機(jī)精確毫秒延時函數(shù)

關(guān)鍵字:單片機(jī) 延時 作者:admin 來源:不詳 發(fā)布時間:2018-05-18  瀏覽:21

對于需要精確延時的應(yīng)用場合,需要精確知道延時函數(shù)的具體延時時間。以C語言編寫的單片機(jī)延時函數(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ù)運(yùn)行時所用的時間。 主程序為:

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

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

標(biāo)號                   指令                                    地址        機(jī)器碼        機(jī)器周期

                         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í)行可以跟蹤程序的運(yùn)行,給個最終的結(jié)果就是總的執(zhí)行機(jī)器周期數(shù)為 :

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

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

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

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

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

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

編輯:admin  最后修改時間:2018-05-18

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

梨树县| 神木县| 泊头市| 双城市| 五原县| 屏山县| 社旗县| 贵溪市| 新乡县| 开原市| 安西县| 小金县| 高邮市| 墨脱县| 禹城市| 那曲县| 东乌珠穆沁旗| 鹤峰县| 南皮县| 乐山市| 久治县| 嘉荫县| 遂平县| 益阳市| 永丰县| 泸定县| 镇远县| 新兴县| 甘洛县| 剑阁县| 公安县| 吉隆县| 尼玛县| 泸溪县| 浙江省| 通化市| 喀什市| 遵义市| 得荣县| 宁国市| 宁城县|