当前位置:文档之家› 单片机延时汇编语言计算方法

单片机延时汇编语言计算方法

单片机延时汇编语言计算方法
我们用汇编语言写单片机延时10ms 的程序(用的是12MHz 晶振的MCS- 51),可以编写下面的程序来实现:MOV R5,#5 ①D1: MOV R6,#4 ②D2: MOV R7,#248 ③DJNZ R7,$ ④DJNZ R6,D2 ⑤DJNZ R5,D1 ⑥RET ⑦这个延时程序共有七条指令,现在就每一条指令执行的次数和所耗时间进行分析:第一条,MOV R5,#5 在整个程
序中只执行一次,且为单周期指令,所以耗时1μs,第二条,
MOV R6,#4 看⑥的指令可知,只要R5-1 不为0,就会返回执行这条指令,共执行了R5 次,共耗时5μs,第三条,MOV R7,#248 同第二条类似,只要R6-1 不为0,就会返回执行这条指令,同时受到外部循环R5 的控制,共耗时R5*R6*1=20μs,第四条,DJNZ R7,$ 只要R7-1 不为0,就执行这条指令,同时受到外部循环的控制,由于该指令是双周期指令,共耗时为R7*R6*R5*2=9920μs,第五条,DJNZ R6,D2 只要R6-1 不为0,就反复执行此条指令(内循环R6 次),又受外循环R7 的控制,
共耗时R6*R5*2=40μs,第六条,DJNZ R5,D1 只要R5-1 不为0,就反复执行此条指令,耗时为R5*2=10μs,第七条,RET 此指令为双周期指令,耗时为2μs,我们也要考虑在调用子程序时用到
LCALL 指令,耗时2μs,最后可以得到总的延时为:
1+5+20+9920+40+10+2=9998μs=10ms 我们可以总结延时总时间的公式:延时总时间=[(2*一层循环次数+3)*二层循环次数+3]*三层循环次数+3 注意此公式
只适用于三层以内的循环tips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

相关主题