
51单片机DJNZ指令循环次数问题
LOOP:MOVRO,#3DJNZRO,LOOP这条指令循环了几次?应该是三次但是我怎么想都觉得是两次。因为DJNZ是减一判断,当第二次循环完成之后,R0变为1,这样减一...
LOOP:MOV RO,#3
DJNZ RO,LOOP
这条指令循环了几次?应该是三次但是我怎么想都觉得是两次。因为DJNZ是减一判断,当第二次循环完成之后,R0变为1,这样减一之后为零不进行循环了,所以循环了两次啊
好吧程序我改了
LOOP:MOV RO,#3
DJNZ RO,LOOP
SJMP $ 展开
DJNZ RO,LOOP
这条指令循环了几次?应该是三次但是我怎么想都觉得是两次。因为DJNZ是减一判断,当第二次循环完成之后,R0变为1,这样减一之后为零不进行循环了,所以循环了两次啊
好吧程序我改了
LOOP:MOV RO,#3
DJNZ RO,LOOP
SJMP $ 展开
2个回答
展开全部
这是个死循环吧,R0永远不能减到0的。每次减1不为零就跳到loop那继续执行,然后R0又是3了,所以永远跳不出去吧!
更多追问追答
追问
我问的是次数。我现在把程序补完了。
追答
虽然你写了一句没啥用的语句,但是我大概理解了你的意思。实际上是循环3次的,R0分别是3,2,1时各执行1次,R0为1后,减1便是0,就跳出了。正确的写法是R0的赋值不能放在LOOP循环里,否则就是个死循环!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询