单片机多重循环延时程序(在线等)

单片机多重循环延时程序(在线等),第1张

题目中早亩裤的答案是错的。应该是:19960606 us

本题目的程序,共有耐圆三重循环,耗陆简时的精确计算方法,可见下图。

图中,还给出了用 keil 调试结果的画面。

包括调用指令的时间,共用了19960610 us。

DELAY 和 D1、D2是一个标号,相当是标记的地址。$标记的是本条指令地址。

DJNZ <Rx>,Addr 是一个跳转指令,具体升败穗 *** 作是:

Rx=Rx-1

if Rx != 0

goto Addr

否则,往后执行

这一段代码其实就吵卜是一个多重循环,相当于 C 语言里的

for (i = 1i >0 i--) // i 相当于R5

for (j= 2j>0 j--) // j 相当于 R6

for (k=248k>0 k--) // k相当于 R7

{

_NOP() //每条汇编指令对应了一定的机器时间周期数(与具体型号有关),

DJNZ好像是3个机器周期,

一直在这循环打转,每执行一条指令就会花掉一定的时间,

所以起到延 时的作用枯谨

}

主要作用就是延时,数节拍数。在 单片机的教程定时器里都会有这样的范例。

不是,顺序是这样的

先执行第一个For的第一遍循环,遇到到二个For时,进行循环,等第二个For循环全部祥答执行完后,再进行谨猜慧第一个For循环的第二遍,遇到到二个For时,再进行循环,等第二个For循环全部执行完后再运行第一个For循环的第三遍。兆卜。。。一直到第一个For循环全部执行完毕。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12308691.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存