掌握通過 8255A 并口傳輸數據的方法,以控制發光二極管的亮與滅。 利用 Proteus 仿真 8255A 控制交通燈,用 8255A 做輸出口,控制十二個 LED 亮滅,模擬交通燈管理。 包含連線圖,連線圖文件,以及匯編源碼。 源代碼: CODE SEGMENT ;8255A 控制交通燈程序 ASSUME CS:CODE IOCONPT EQU 86H;8255 控制口 IOAPT EQU 80H ;PA 口 IOBPT EQU 82H;PB 口 IOCPT EQU 84H;PC 口 START:MOV AL,10000010B ;PB 輸入,PA,PC 輸出 MOV DX,IOCONPT OUT DX,AL ;寫命令字 MOV DX,IOBPT ;讀 PB 口 IN AL,DX MOV BYTE PTRDS:[0601H],AL ;保存 PB 口數據 MOV DX,IOCONPT ;8255 控制口 MOV AL,10010010B OUT DX,AL ;寫命令字,PA,PB,PC 輸出 MOV DX,IOBPT ; MOV AL,DS:[0601H] OR AL,0F0H OUT DX,AL MOV DX,IOCPT MOV AL,0F0H OUT DX,AL ;四路口紅燈全亮 CALL DELAY1 ;延時 IOLED0: MOV AL,01011010B MOV DX,IOCPT OUT DX,AL ;南北綠燈亮,東西紅燈亮 CALL DELAY1 ;延時 CALL DELAY1 ;延時 OR AL,0F0H OUT DX,AL ;南北綠燈滅 MOV CX,8H ;閃爍8次? IOLED1: MOV DX,IOBPT MOV AL,DS:[0601H] AND AL,10101111B OUT DX,AL ;南北黃燈亮 CALL DELAY2 ;延時 OR AL,01010000B OUT DX,AL ;南北黃燈滅 CALL DELAY2 ;延時 LOOP IOLED1 ;南北黃燈閃爍 8 次 MOV DX,IOCPT MOV AL,0F0H OUT DX,AL ;四路口紅燈全亮 CALL DELAY2 ;延時 MOV AL,10100000B OUT DX,AL ;東西綠燈亮 CALL DELAY1 ;延時 CALL DELAY1 OR AL,0F0H OUT DX,AL ;東西綠燈滅 MOV CX,8H IOLED2: MOV DX,IOBPT MOV AL,DS:[0601H] AND AL,01011111B ;因為是與,保留低四位 OUT DX,AL ;東西黃燈亮 CALL DELAY2 ;延時 OR AL,11110000B OUT DX,AL ;東西黃燈滅 CALL DELAY2 ;延時 LOOP IOLED2 ;東西黃燈閃爍 8 次 MOV DX,IOCPT MOV AL,0F0H OUT DX,AL ;四路口紅燈全亮 CALL DELAY2 JMP IOLED0 ;循環繼續 DELAY1: PUSH AX PUSH CX MOV CX,0030H DELY2: CALL DELAY2 LOOP DELY2 POP CX POP AX RET DELAY2: PUSH CX MOV CX,1500H DELA1: LOOP DELA1 POP CX RET CODE ENDS END START
|