新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)延時(shí)匯編語(yǔ)言計(jì)算方法

單片機(jī)延時(shí)匯編語(yǔ)言計(jì)算方法

作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
我們用匯編語(yǔ)言單片機(jī)延時(shí)10ms的程序(用的是12MHz晶振的 MCS-51),可以編寫下面的程序來實(shí)現(xiàn):
MOV R5,#5 ①
D1: MOV R6,#4 ②
D2: MOV R7,#248 ③
DJNZ R7,$ ④
DJNZ R6,D2 ⑤
DJNZ R5,D1 ⑥
RET ⑦
這個(gè)延時(shí)程序共有七條指令,現(xiàn)在就每一條指令執(zhí)行的次數(shù)和所耗時(shí)間進(jìn)行分析:
第一條, MOV R5,#5 在整個(gè)程序中只執(zhí)行一次,且為單周期指令,所以耗時(shí)1μs,
第二條, MOV R6,#4 看⑥的指令可知,只要R5-1不為0,就會(huì)返回執(zhí)行這條指令,共執(zhí)行了R5次,共耗時(shí)5μs,
第三條, MOV R7,#248 同第二條類似,只要R6-1不為0,就會(huì)返回執(zhí)行這條指令,同時(shí)受到外部循環(huán)R5的控制,共耗時(shí)R5*R6*1=20μs,
第四條, DJNZ R7,$ 只要R7-1不為0,就執(zhí)行這條指令,同時(shí)受到外部循環(huán)的控制,由于該指令是雙周期指令,共耗時(shí)為R7*R6*R5*2=9920μs,
第五條, DJNZ R6,D2 只要R6-1不為0,就反復(fù)執(zhí)行此條指令(內(nèi)循環(huán)R6次),又受外循環(huán)R7的控制,共耗時(shí)R6*R5*2=40μs,
第六條, DJNZ R5,D1 只要R5-1不為0,就反復(fù)執(zhí)行此條指令,耗時(shí)為R5*2=10μs,
第七條, RET 此指令為雙周期指令,耗時(shí)為2μs,
我們也要考慮在調(diào)用子程序時(shí)用到LCALL指令,耗時(shí)2μs,最后可以得到總的延時(shí)為:1+5+20+9920+40+10+2=9998μs=10ms
我們可以總結(jié)延時(shí)總時(shí)間的公式:
延時(shí)總時(shí)間=[(2*一層循環(huán)次數(shù)+3)*二層循環(huán)次數(shù)+3]*三層循環(huán)次數(shù)+3
注意此公式只適用于三層以內(nèi)的循環(huán)


評(píng)論


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

關(guān)閉