瀏覽單個文章
asccpu
Master Member
 

加入日期: Jan 2002
您的住址: U.S.S AGC
文章: 1,669
引用:
作者蒼藍的月光
沒錯!!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或模擬器嗎?
這用單步追蹤幾次就差不多知道問題所在了。
__________________
辭源數位化計劃啟始於2014年1月。請拜訪成果。
舊 2006-07-22, 07:29 PM #26
回應時引用此文章
asccpu離線中