標(biāo)題: 單片機(jī)延時(shí)程序 [打印本頁(yè)]

作者: res    時(shí)間: 2008-6-7 19:46
標(biāo)題: 單片機(jī)延時(shí)程序
MOV R2,#10H
........
DELY:   PUSH 02H
DEL2:   PUSH 02H
DEL3:   PUSH 02H
DEL4:   DJNZ R2,DEL4    ;單片機(jī)延時(shí)程序
        POP 02H
        DJNZ R2,DEL3
        POP 02H
        DJNZ R2,DEL2
        POP 02H
        DJNZ R2,DELY
        RET
請(qǐng)問(wèn)延時(shí)多長(zhǎng)時(shí)間若晶振12MHZ

作者: yysmcu    時(shí)間: 2008-6-7 22:56
具體算起來(lái)要比較長(zhǎng)式子,你不妨把延時(shí)程序拷貝進(jìn)Keil C運(yùn)行,把斷點(diǎn)設(shè)置到RET處,很快就可得出延時(shí)時(shí)間,記住先設(shè)置好晶振
作者: 大白狐    時(shí)間: 2008-6-10 11:38

晶振為12MHZ則一個(gè)機(jī)器周期執(zhí)行的時(shí)間為1微秒

DJNZ為雙周期指令所以執(zhí)行一次需要2個(gè)機(jī)器周期
執(zhí)行一次DJNZ R2,DEL4需要10次才可以執(zhí)行下一條指令
10*2*1微妙=20微秒
執(zhí)行DJNZ R2,DEL3 10*10*2*1微秒
同理DJNZ R2,DEL2  10*10*10*2微秒
DJNZ R2,DELY     10*10*10*10*2*1微秒
所以總時(shí)間為
10*10*10*10*2*1+10*10*10*2+10*10*2*1+10*2*1
其實(shí)這也只是算出個(gè) 粗略的結(jié)果
要想得到精確的結(jié)果 還要把 所有的 PUSH和POP所用的時(shí)間給加上```


作者: res    時(shí)間: 2008-6-10 12:13
謝謝 大白狐斑竹大人啊
作者: hjlost    時(shí)間: 2014-10-24 14:17
掘墓高手,專挖古墓,一挖一個(gè)坑,坑坑見墓。。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1