Page 60 -
P. 60
; 動作: 當 LED 全亮時則逐點暗掉,當 LED 全暗時則逐點亮起
; 說明: 暫存器 R0 用以控制 P0 到 P3 為全亮或全暗,R1 用以控制目前掃描的位置
;
ORG 00H
JMP START ;規避 00H 至 2FH 間之中斷向量執行位址
ORG 30H ;
MOV SP,#30H ;將堆疊指標重新指向
MOV A,#00H
MOV P3,A ;輸出資料至埠 3
CALL DELAY
MOV P2,A ;輸出資料至埠 2
CALL DELAY
MOV P1,A ;輸出資料至埠 1
CALL DELAY
MOV P0,A ;輸出資料至埠 0
CALL DELAY
START: MOV A,#01H
RT0: MOV R1,A
XRL A,P0 ;與埠 0 執行互斥或
MOV P0,A ;輸出資料至埠 0
CALL DELAY ;呼叫 0.2 秒延遲副程式
MOV A,R1
CLR C ;清除進位旗標
RLC A ;與進位旗標一起向左旋轉
JNC RT0 ;若進位旗標不為 0 則跳回再次執行
MOV A,#01H
RT1: MOV R1,A
XRL A,P1 ;與埠 1 執行互斥或
MOV P1,A ;輸出資料至埠 1
CALL DELAY ;呼叫 0.2 秒延遲副程式
MOV A,R1
CLR C ;清除進位旗標
RLC A ;與進位旗標一起向左旋轉
JNC RT1 ;若進位旗標不為 0 則跳回再次執行
MOV A,#01H
RT2: MOV R1,A
XRL A,P2 ;與埠 2 執行互斥或
MOV P2,A ;輸出資料至埠 2