利用8255A实现四位数据的显示输出
DATAS SEGMENT
;此处输入数据段代码
TAB DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH
DISP_BUFF DB 2,0,1,6
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV AL,10000001B;8255A的初始化
OUT 36H,AL
DISPLAY: MOV AH,01H
MOV SI,0
LEA BX,TAB
NEXT: MOV AL,DISP_BUFF[SI];把DISP_BUFF的数据取出
XLAT
OUT 30H,AL
MOV AL,AH;把位控信号输入到PB口
OUT 32H,AL
MOV CX,500
WAIT1: NOP
NOP
LOOP WAIT1
MOV AL,0;每位LED灯亮一段时间后在显示时下一位需要关闭LED
OUT 32H,AL
INC SI;下一位显示输出
ROL AH,1;位控改变
CMP AH,10H;查看四位数据是否都全显示输出
JZ DISPEND
JMP NEXT
DISPEND: JMP DISPLAY
MOV AH,4CH
INT 21H
CODES ENDS
END START