立即注册 登录
返回首页

uid:59980的个人空间

日志

延时子程序详解

已有 1731 次阅读2014-3-25 00:19 |个人分类:时控类| 子程序

延时子程序详解

延时子程序(500ms)


DELAY: MOV    R3,#50 ;  将立即数50载入R3寄存器中,使R3的值等于50,R3=50
D1:    MOV    R4,#20   将立即数20载入R4寄存器中,使R4的值等于20,R4=20
D2:    MOV    R5,#248  将立即数248载入R5寄存器中,使R5的值等于20,R5=248
       DJNZ   R5,$     指令DJNZ R5,$的意思是:将R5的值减1,不等于零(0)则重新执行本行指令——继
              续将R5减1并与0比较。

       DJNZ   R4,D2    指令DJNZ R4,D2的作用是:将R4的值减1,不等于零(0)则跳回标号D2处继续执行
       DJNZ   R3,D1    指令DJNZ R3,D2的作用是:将R3的值减1,不等于零(0)则跳回标号D1处继续执行
       RET            ; 返回主程序
       END            ; 汇编程序结束

总解:由于R4预先装入了20,所以这4条指令共花去了20*(2+2*248+2)+2=10002(个)机器周期。如果使用的是12MHZ的晶振,1个机器周期为1us(微秒),则以上这些程序所花的时间为10002*1us=10.002ms,约等于10ms.则全部又由于R3也先预先装入了50,所以这程序延时为50*10ms=500ms.

要想改变延时时间的长度,只要改变R3的预装数值即可。R3=100时,为1秒。

                                                  R3=600时,为6秒。
                                                  R3=6000时,为60秒。依此类推。。。。。。
当然,改变R4,R5的值也可以改变延时时间的长度,但要进行相应的计算。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部