此代码的目的是将打开的位闪烁三次,退出循环并将其关闭。目前,代码似乎处于无限循环中,并且在计数为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
就像提到的@PeterCordes一样,最后一个命令是无条件跳转到循环。
该循环递减变量i
,在从结束跳转到循环之后为0。它不会再次用3初始化。在循环中递减i之后,它将是负数并且将保持超过32000次迭代(w = 16Bit?)。比它继续到最后一跳,所有都将从新的开始。
你真的需要最后一跳吗?如果你达到这个代码,你可以肯定i == 0
。