新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机汇编延时程序的理解

单片机汇编延时程序的理解

作者:时间:2012-08-20来源:网络收藏

这样,我们就可以算算这个子累计进行了多少个周期,然后乘以1微秒,就算出它占用的时间,也就是的时长了!

第一句:DELAY: MOV R7,#250 ;执行了一次,没有任何语句跳转给它,单周期。1

第二句:D1: MOV R6,#250 ;执行了250次,全部是第四句跳过来的,单周期。250

第三句:D2: DJNZ R6,D2 ;原地执行了250次,从第二句顺延(第二句执行完,没有其它跳转的话肯定要执行第三句)过来250次,也就是250*250=62500次,双周期*2。125000

第四句:DJNZ R7,D1 ; 从第三句顺延过来250次,双周期*2。500

总计:1+250+125000+500=1257501次,乘以1微秒,换算约为0.13秒。

我们可以通过调整R6、R7的数值来调整的长度。事实上,8位计算机中,R6之类的工作寄存器地址最大只能放下255的十进制数值,因此要通过上述达到更长的是办不到的。

那怎么办呢?

我们可以再增加一个R4,让上述的最多可以循环255遍,这样,0.13秒的200多倍就是30秒上下了,不够的话再增加循环,又可以扩大200多倍,当然,工作寄存器的数量是有限的,因此这个延时程序也是有限的,如果还不够用怎么办呢,就目前我所学的知识,只能在母程序里面设置循环了,也就是让这个子程序在母程序里面继续循环


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭