此代码的目的是将打开的位刷新3次,退出循环然后将其关闭。当前,代码似乎处于无限循环中,并且在计数为0后不会退出循环
mov.b #0x00,&P2REN ;
mov.b #0xFF,&P2OUT ;
;mov.b #3, r5
.bss i,3
mov.w #3,&i ;
dec.w &i ; i--,
jnz for ; back to for loop
for_Done:
delayloop: dec.w r15 ;
jnz delayloop ;jump if not zero to delayloop
jmp for ;jump to the for
;jmp for_Done
答案 0 :(得分:1)
就像@PeterCordes提到的那样,最后一个命令是无条件跳转到循环。
该循环从末尾跳转到循环后,将变量i
减为0。将不再次用3初始化。在循环中将i减1后,它将为负,并保持32,000次以上的迭代(w = 16Bit?)。直到最后一跳,所有一切都将从新开始。
您真的需要最后一跳吗?如果您输入以下代码,则可以确保i == 0
。