📄 9_55keyd.asm
字号:
;//*********************************************************
;文件名: 55KeyD for 8088
;功能: 8255控制键盘显示实验
;接线: 连接8279键盘显示模块的JD3E到8255模块的JD3C(PA口);
; JD2E到8255模块的JD4C(PB口);
; JD4E到8255模块的JD5C(PC口);
; 用导线连接CPU模块的200H到8255模块的CS_8255。
;//*********************************************************
D8255A EQU 200H ;8255 PA 口地址
D8255B EQU 201H ;8255 PB 口地址
D8255C EQU 202H ;8255 PC 口地址
D8255 EQU 203H ;8255 状态/命令口地址
code segment
main proc far
assume cs:code,ds:code
start:
push cs
pop ds
MOV AL,90H ;方式0,PB,PC口输出,PA口输入
MOV DX,D8255
OUT DX,AL ;点亮对应的LED
KB_DIS:
CALL KEY ;读键盘
MOV AL,AH
CMP AL,0FFH
JE KB_DIS ;没有则继续读键
CALL DISPLAY
JMP KB_DIS
main endp
key proc near
MOV AL,02H ;扫描第一行
MOV DX,D8255C
OUT DX,AL
MOV DX,D8255A
IN AL,DX
MOV AH,0
CMP AL,0FFH
JNZ KEYCALL ;判键是否按下
MOV AL,01H ;扫描第二行
MOV DX,D8255C
OUT DX,AL
MOV DX,D8255A
IN AL,DX
MOV AH,8
CMP AL,0FFH
JNZ KEYCALL ;判键是否按下
JMP NOKEY ;无键按下
KEYCALL:
MOV CX,08H ;计算键码
SHIFT:
SAR AL,1
JNC TORET
INC AH
LOOP SHIFT
JMP NOKEY ;无键按下
TORET: RET
NOKEY: MOV AH,0FFH ;返回无键标志
RET
key endp
Display PROC NEAR
MOV AL,11000011B ;显示位置第0个数码管
MOV DX,D8255C
OUT DX,AL ;点亮对应的LED
MOV AL,AH ;取键值
LEA BX,LED
XLAT ;取显示段码
MOV DX,D8255B ;将AL中内容写到数码管上
OUT DX,AL
RET
LED DB 3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5
DB 7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B
DB 39H,5EH,79H,71H,00H,40H;C,D,E,F, ,-
Display endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -