引用:
作者蒼藍的月光
沒錯!!LED就是3的PIN 大大您真內行!^^!
小弟想到一點可能就是 的C值就有問題
因為左旋完之後接著又右旋
那就是左旋完之後的 C值又被右旋接著繼續用
但這就是小弟不太懂的地方
如果真的是這樣 那應該紅藍LED還是會繼續左旋右
旋下去,只是右旋的動作會不正確才對
可是現在看起來只有右旋才有動作....Orz
|

想到了呀,沒錯,這就是BUG所在,事實上你是在旋轉33bit
而你一開始在旋轉前的 C的內值是如何你不知道,所以你要準備2個bit用來各別存放第33bit的狀態。
例如:
C_RLC_LAST_STA REG 48H.0
C_RRC_LAST_STA REG 48H.1
在你的 L_CHANGE: 中的第一行及RET前一行加上
MOV C,C_RLC_LAST_STA (我忘了有沒有這樣的用法,若沒有就自行替換)
....... 原本程式 ......
MOV C_RLC_LAST_STA,C
RET
同樣在 R_CHANGE: 也是加入...
MOV C,C_RRC_LAST_STA
........
MOV C_RRC_LAST_STA,C
RET
而程式一開始就先把1存入C_RLC_LAST_STA 及C_RRC_LAST_STA 內。
而至於為何沒出錯,可能與你目前程式比較單純有關,等程式一大這BUG就會慢慢顯現出來。
你工作的地方沒有ICE或模擬器嗎?
這用單步追蹤幾次就差不多知道問題所在了。