单片机三层循环问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:05:04
MOV R0,#10
DEL2:MOV R1,#200
DEL1:MOV R2,#250
DEL0:DJNZ R2,DEL0
DJNZ R1,DEL1
DJNZ R0,DEL2
问题是这里运行了多少次,最好详细步骤。。。。。

这里运行了多少次???? 什么意思啊?

MOV R0,#10 // 10 赋予R0
DEL2:MOV R1,#200 // 200 赋予R1
DEL1:MOV R2,#250 // 250 赋予R2
DEL0:DJNZ R2,DEL0 //R2减1 如果不为0 跳转到DEL0
DJNZ R1,DEL1 //R1减1 如果不为0 跳转到DEL1
DJNZ R0,DEL2 //R0减1 如果不为0 跳转到DEL2

(DJNZ R2,DEL0 总共执行了250*200*10次,DJNZ R1,DEL1 总共执行了200*10次
DJNZ R0,DEL2 总共执行了10次
DJNZ R2,DEL0 执行了250*200*10后就结束了这三层循环)

这是个常用的延时程序 延时的时间大概是 250*200*10us 就是500ms

51单片机?
如果是,12M晶振就这么多次:

(((250×2)+1)×200+1)×10+1 uS

200*250*10
先循R2 250次
然后r1减1 再循环250 就是200*250
同理 就是200*250*10

这个很好算的了 你只要用R0*R1*R2就可以了 这个程序通常是用来做延时用的 如果你用的是51单片机 晶振选择12M 则总的延时约为 10×200×250us