A_8255_1 .EQU E0H ;第一顆 8255 的埠A 暫存器 B_8255_1 .EQU E1H ;第一顆 8255 的埠B 暫存器 C_8255_1 .EQU E2H ;第一顆 8255 的埠C 暫存器 D_8255_1 .EQU E3H ;第一顆 8255 的控制暫存器 SET_8255 .MACRO PORT,WORD ;寫控制命令碼至 8255 的控制暫存器 PUSH 00H PUSH ACC MOV R0,#PORT MOV A,WORD MOVX @R0,A POP ACC POP 00H .ENDM ;--------------------------------------------------------------- OUT_8255 .MACRO PORT ;CPU 經由 8255 I/O 埠送出資料 PUSH 00H MOV R0,#PORT MOVX @R0,A POP 00H .ENDM ;--------------------------------------------------------------- ORG 00H ;程式起始位址00H MOV SP,#50H ;設定堆疊區 CALL DELAY ;延遲一下,等系統穩定 RAMCHK OFF ;取消SFR之檢查 ORL 8EH,#02H ;取消內部的XRAM SET_8255 D_8255_1,#80H ;設定ABC三個埠都是輸出 MOV A,#FFH OUT_8255 B_8255_1 ;關閉其它LED OUT_8255 C_8255_1 ;關閉其它LED ;--------------------------------------------------------------- LOOP: MOV A, #00000000B OUT_8255 A_8255_1 ACALL DELAY MOV A, #11111111B OUT_8255 A_8255_1 ACALL DELAY AJMP LOOP DELAY: MOV R6, #250 DL1: MOV R7, #250 DL2: DJNZ R7, DL2 DJNZ R6, DL1 RET END