瀏覽單個文章
蒼藍的月光
Senior Member
 

加入日期: Jan 2004
您的住址: 高雄市
文章: 1,244
引用:
作者asccpu
想到了呀,沒錯,這就是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或模擬器嗎?
這用單步追蹤幾次就差不多知道問題所在了。

.CHIP 8052
;----------------------------------------------
ORG 0000H
LCALL DELAY
RL_C REG 30H.0
RR_C REG 30H.1
SETB 30H.0
SETB 30H.1
;----------------------------------------------
MOV 40H,#DFH
MOV 41H,#FFH
MOV 42H,#FFH
MOV 43H,#FFH
MOV 44H,#DFH
MOV 45H,#FFH
MOV 46H,#FFH
MOV 47H,#FFH
;----------------------------------------------
LOOP:
MOV C,RL_C
LCALL L_DATA
MOV A,40H
MOV P0,A
MOV A,41H
MOV P1,A
MOV A,42H
MOV P2,A
MOV A,43H
MOV P3,A
MOV RL_C,C
LCALL DELAY1
;----------------------------------------------
MOV C,RR_C
LCALL R_DATA
MOV A,44H
MOV P0,A
MOV A,45H
MOV P1,A
MOV A,46H
MOV P2,A
MOV A,47H
MOV P3,A
MOV RR_C,C
LJMP LOOP
;-------------------------------------------

大大我有改了,可是跑出來的結果還是一樣只有右旋的說...Orz

呃...大大我待的只是間小小的在做電玩(就是八大行業的那種電玩)的小小企業社而已!>"<!沒有您所謂的 ICE或模擬器 的說~"~
舊 2006-07-23, 12:33 AM #27
回應時引用此文章
蒼藍的月光離線中