51单片机汇编延时分析:

本文分析了51单片机延时函数的实现细节,通过汇编语言描述了执行流程。在12M晶振的条件下,详细计算了每个指令的执行次数和总延时时间,主要耗时集中在第三条双周期语句上。

延时函数:

DELAY: MOV R7, #250   ;1   
D1: MOV R6, #250      ;2
D2: DJNZ R6, D2       ;3
DJNZ R7, D1            ;4
RET                     ;5



第一句是定义一个延时函数标号,并将250传到R7

第二句是放置一个标号,并把250放到R6

第三句是放置一个标号,并判断RR6的值是否为0,不为0的话转到后面标号对应处执行

第四句是先将R7减1 ,然后判断R7是否为0 ,不为0的话转到后面的标号对应处执行

第五句是函数结束,详细用法请自行百度。


过程:

程序调用延时函数,根据第一句的编号找到此函数并从第一句开始执行,将R7内的值变为250,执行之后:

        R7:250

此时开始执行第二句,将250放在R6内,并在此句前放置标号:D1,执行之后:

        R7:250

        R6:250

然后开始执行第三句,判断R6是否为0,不为0转到标号D2处开始执行,而D2的标号也是第三条语句,因此只要R6不为0,则一直执行本条语句,又知R6=250,因此,这条语句将执行250次后结束。此时:

        R7:250

        R6:0

此时将执行第四句,首先将R7值减1,然后判断其值是否为0,将R7-1后R7为249,因此将执行其后的标号D1,即第二句。此时:

         R7:249

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值