8255控制数码管
如图5所示,8255A的片选接译码器IO5的输出,A0接地址总线的A1,A1接地址总线的A2,因此8255A的PA口、PB口、PC口、控制口的地址分别为0FFD0H、0FFD2H、0FFD4H、0FFD6H。
图5
7段数码管共阴极接法如图6所示。
比如显示7,abc段高电平点亮,因此D2D1D0为1,D7D6D5D4D3为0,故7的段选码为00000111B,即07H。
若采用共阳极接法,比如显示7,abc段低电平点亮,因此D2D1D0为0,D7D6D5D4D3为1,故7的段选码为11111000B,即0F8H。
如图5所示,本次试验7段数码管采用共阳极接法。数字0~9的段选码依次为0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H。
8255A的PA口工作于方式0,输出。
问题:若有一片8255A的连接如图7所示,端口地址的范围保持不变,在PC0连接了一个开关。
图7
实现以下程序要求:
当开关合上,数码管循环显示0~9,当开关断开,数码管显示的数字保持不变。
IOA EQU 0FFD0H
IOB EQU 0FFD2H
IOC EQU 0FFD4H
IOCON EQU 0FFD6H
DATA SEGMENT
TABLE DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI, TABLE
;控制方式初始化
MOV AL,10001001B
MOV DX,IOCON
OUT DX,AL
A1:
MOV AL,[SI]
MOV DX,IOA
OUT DX,AL
MOV DX,IOC
IN AL,DX
TEST AL,00000001B
JNZ A1
CALL DELAY
CMP BYTE PTR[SI],0
JNZ A2
LEA SI, TABLE
A2:
INC SI
JMP A1
DELAY PROC
MOV CX,0FFFFH
NEXT:
NOP
LOOP NEXT
RET
DELAY ENDP
CODE ENDS
END START