新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī)延時方法總結(jié)

        單片機(jī)延時方法總結(jié)

        作者: 時間:2013-08-02 來源:網(wǎng)絡(luò) 收藏

        3、注意DJNZ R6,Delay2是在166次循環(huán)后執(zhí)行1次的(時間為MOV+本身,3*2=6μs),直到166*200次后,R6=0,才執(zhí)行DJNZ R5,Delay1。

        4、DJNZ R5,Delay1是在R5不為0的時候循環(huán)回去。時間也為6μs。

        5、時間總計:166*200*25*6μs+200*25*6μs+25*6μs=5010150μs,合計5.01015ms(編程的人都遇到過類似的潛逃循環(huán),此程序忽略了執(zhí)行MOV的時間,只計算了循環(huán)所用時間,即166*200*25*6/1000000=4.98ms,近似5ms)。

        程序改進(jìn):

        去掉NOP命令,整數(shù)化1ms需要的延時常數(shù)。

        Delay: MOV R5,#25 ;5ms延時——MOV指令占用1時間

        Delay1: MOV R6,#200 ;200ms延時

        Delay2: MOV R7,#250 ;1ms延時常數(shù)

        Delay3: ;NOP ;空指令,什么都不做,停留1機(jī)器周期時間

        DJNZ R7,Delay3 ;R7減1賦值給R7,如果此時R7不等于零,轉(zhuǎn)到Delay3執(zhí)行。——2機(jī)器周期時間

        DJNZ R6,Delay2

        DJNZ R5,Delay1

        此時時間總計:250*200*25*4μs+200*25*6μs+25*6μs=5030150μs。時間占用誤差反而比未改進(jìn)的時候大,可修正,將R7-30150/(25*200*4)=248(因為R7=250循環(huán)1次占用2個機(jī)器周期,4μs,計算等于R7-1.5075,將時間減小到小于5ms,剩余時間另補(bǔ),取248)。則:時間總計:248*200*25*4μs+200*25*6μs+25*6μs=4990150μs,需要補(bǔ):5000000-4990150=9850μs,9850/2=4925機(jī)器周期。補(bǔ)一個MOV R4,#200,4個NOP,還需4920機(jī)器周期,將其約分,得到24*205=4920。如何建立函數(shù)根據(jù)實際代碼調(diào)整,如下:

        Delay: MOV R5,#25 ;5ms延時——MOV指令占用1機(jī)器周期時間

        Delay1: MOV R6,#200 ;200ms延時

        Delay2: MOV R7,#250 ;1ms延時常數(shù)

        Delay3: ;NOP ;空指令,什么都不做,停留1機(jī)器周期時間

        DJNZ R7,Delay3 ;R7減1賦值給R7,如果此時R7不等于零,轉(zhuǎn)到Delay3執(zhí)行。——2機(jī)器周期時間

        DJNZ R6,Delay2

        DJNZ R5,Delay1

        NOP

        NOP

        NOP

        NOP

        MOV R3,#6

        Delayadd: MOV R4,#205

        MOV R2,#0H

        DJNZ R3,Delayadd

        解析205*24調(diào)整為205*6——這是因為Delay循環(huán)為4機(jī)器周期代碼,因此將24/4=6。請計算:205*6*4=4920;4920+5=4925。時間補(bǔ)充正好。此時時間計算:248*200*25*4μs+200*25*6μs+25*6μs=4990150μs+4925*2μs=5000000μs合計5ms。

        理論上1μs都不差(僅為科學(xué)探討,具體晶振頻率的誤差多大作者并不明確)。

        c語言相關(guān)文章:c語言教程


        塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
        晶振相關(guān)文章:晶振原理

        上一頁 1 2 3 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 灵川县| 清丰县| 天门市| 迁西县| 南康市| 新绛县| 资阳市| 汝阳县| 通辽市| 金门县| 军事| 武强县| 建始县| 恩施市| 娄底市| 那曲县| 兴义市| 长武县| 澄城县| 南城县| 天台县| 南开区| 攀枝花市| 西畴县| 芜湖市| 孟连| 年辖:市辖区| 台东县| 松江区| 嘉峪关市| 五华县| 咸宁市| 礼泉县| 漠河县| 个旧市| 甘孜| 永嘉县| 贵溪市| 鹿邑县| 会泽县| 万山特区|