68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

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

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

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

對于需要精確延時的應用場合,需要精確知道延時函數(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結(jié)束符):

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

                         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í)行可以跟蹤程序的運行,給個最終的結(jié)果就是總的執(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ù)的延時時間更精確一些。

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

編輯: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

中牟县| 荃湾区| 延安市| 萝北县| 舒兰市| 浦江县| 屏东市| 佛学| 宝丰县| 四子王旗| 庆城县| 乳山市| 五峰| 綦江县| 交口县| 咸丰县| 澄江县| 龙海市| 泾源县| 怀柔区| 兰考县| 合阳县| 昌黎县| 吕梁市| 信丰县| 文成县| 文水县| 娱乐| 乌恰县| 镇远县| 永德县| 略阳县| 大竹县| 大庆市| 思茅市| 高青县| 汽车| 鹰潭市| 芷江| 朔州市| 新郑市|