你的這一段“MAIN:
MOV P1,A
LCALL DELAY
LOOP1:
RL A
INC R1
AJMP MAIN”有點問題,這一段實際上已經構成了迴圈,執行到INC R1處時,程式回到MAIN處,累加器內資料已經左移了一位,而R1內資料加1,當再次執行到RL A 處,再次左移一位,R1內資料加1,程式又回到MAIN.後面的程式就沒有執行。改成下面的試試,我在微控制器實驗板上已經實現,是來回滾動的。
ORG 00H
START:
MOV R1,#0
MOV A,#00H
MOV P2,A
MOV A,#01H
CJNE R1,#7, LOOP1
LOOP2:
RR A
DEC R1
CJNE R1,#0,LOOP2
AJMP START
DELAY:
MOV R2,#0FFH
D1:
MOV R3,#0FFH
D2:
DJNZ R3,D2
DJNZ R2,D1
RET
END
你的這一段“MAIN:
MOV P1,A
LCALL DELAY
LOOP1:
RL A
INC R1
AJMP MAIN”有點問題,這一段實際上已經構成了迴圈,執行到INC R1處時,程式回到MAIN處,累加器內資料已經左移了一位,而R1內資料加1,當再次執行到RL A 處,再次左移一位,R1內資料加1,程式又回到MAIN.後面的程式就沒有執行。改成下面的試試,我在微控制器實驗板上已經實現,是來回滾動的。
ORG 00H
START:
MOV R1,#0
MOV A,#00H
MOV P2,A
MOV A,#01H
LOOP1:
RL A
INC R1
MOV P2,A
LCALL DELAY
CJNE R1,#7, LOOP1
LOOP2:
RR A
DEC R1
MOV P2,A
LCALL DELAY
CJNE R1,#0,LOOP2
AJMP START
DELAY:
MOV R2,#0FFH
D1:
MOV R3,#0FFH
D2:
DJNZ R3,D2
DJNZ R2,D1
RET
END