文档介绍:实验要求:
本次实验的要求与前一实验类似,但仅要求识别小键盘0~9数字键,将小键盘键入的任意长的0~9数字串,采用左移位动态显示的方法显示在数码管电路上,当小键盘按下”R”时停止演示.
实验电路图:
程序框图:
预置:A口为方式0输出
B口为方式0输入
PA7-------PA0
PB2----PB0 AH
AH=7?
程序清单:
TITLE LITTLEKEYBOARD
SSEG SEGMENT PARA STACK 'STACK'
DB 256 DUP (0)
SSEG ENDS
DSEG SEGMENT
A_8255 EQU 220H
B_8255 EQU 221H
CON_8255 EQU 223H
BUFFER DB 6 DUP(0)
HANG DB ?
LIE DB ?
NEWHANG DB ?
NEWLIE DB ?
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG,SS:SSEG
START PROC NEAR
MOV AX,DSEG
MOV DS,AX
CMPAGAIN:
CALL DISPLAY
MOV DX,CON_8255
MOV AL,10000010B
OUT DX,AL
AGAIN:
CALL DISPLAY
MOV DX,A_8255
MOV AL,0
OUT DX,AL
MOV DX,B_8255
IN AL,DX
CMP AL,00000111B
JE AGAIN
MOV LIE,AL
CALL DELAY1
MOV DX,CON_8255
MOV AL,10010000B
OUT DX,AL
MOV DX,B_8255
MOV AL,LIE
OUT DX,AL
MOV DX,A_8255
IN AL,DX
MOV HANG,AL
CALL GETINPUT
CMP AL,0AH
JE CMPAGAIN
CMP AL,0FFH
JNE CONTINUE
CALL CLOSEALL
MOV AH,4CH
INT 21H
CONTINUE:
CALL CHANGE
MOV CX,0
LABLE:
CALL DISPLAY
INC CX
CMP CX,256
JNE LABLE
JMP CMPAGAIN
RET
START ENDP
;*********************************
DELAY1 PROC NEAR
PUSH AX
PUSH CX
PUSH DX
MOV AH,86H
MOV CX,0
MOV DX,20000
INT 15H
POP DX
POP CX
POP AX
RET
DELAY1 ENDP
GETINPUT PROC NEAR
CMP LIE,00000110B
JE LIE0
CMP LIE,00000101B