<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機延時(shí)方法總結

單片機延時(shí)方法總結

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

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

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

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

程序改進(jìn):

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

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

Delay1: MOV R6,#200 ;200ms延時(shí)

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

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

DJNZ R7,Delay3 ;R7減1賦值給R7,如果此時(shí)R7不等于零,轉到Delay3執行?!?機器周期時(shí)間

DJNZ R6,Delay2

DJNZ R5,Delay1

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

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

Delay1: MOV R6,#200 ;200ms延時(shí)

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

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

DJNZ R7,Delay3 ;R7減1賦值給R7,如果此時(shí)R7不等于零,轉到Delay3執行?!?機器周期時(shí)間

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調整為205*6——這是因為Delay循環(huán)為4機器周期代碼,因此將24/4=6。請計算:205*6*4=4920;4920+5=4925。時(shí)間補充正好。此時(shí)時(shí)間計算:248*200*25*4μs+200*25*6μs+25*6μs=4990150μs+4925*2μs=5000000μs合計5ms。

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

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


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

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>