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
   55   56   57   58   59   60   61   62   63   64   65