您的位置 首页 方案

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

我们用汇编语言写单片机延时10ms的程序(用的是12MHz晶振的MCS-51),可以编写下面的程序来实现:MOVR5,5①D1:MOVR6,4

咱们用汇编语言单片机延时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
留意此公式只适用于三层以内的循环

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/259056.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部