基于8086计算机系统,利用8255 (60-63H)和8259(20H) 设计一个小型键盘输入,两位数码段显示打分系统(0-99)
时间: 2023-06-15 18:03:03 浏览: 337
键盘及数码管显示实验,通过8255控制
这个问题涉及到硬件设计和编程,需要分为两个部分来讨论。
1. 硬件设计
使用8255和8259来设计小型键盘输入和两位数码段显示打分系统,具体的硬件设计如下:
- 键盘输入部分
键盘通过8根引脚连接到8255的Port A,8255的Port B和Port C连接到两个74LS138译码器,通过译码器将键盘输入转换为16进制码,再通过8259的IRQ0引脚输入到8086的中断请求INTR引脚。
- 显示打分系统部分
两个数码段通过8根引脚连接到8255的Port C,8255的Port A和Port B连接到两个74LS138译码器,通过译码器将16进制码转换为数码管所需的信号,控制两个数码管的显示。
2. 编程
在8086上编程,需要配置8255和8259的初始化参数和中断服务程序,代码如下:
```
; 8255初始化参数
PPI_BASE EQU 60H
PPI_CTRL EQU PPI_BASE
PPI_A EQU PPI_BASE+1
PPI_B EQU PPI_BASE+2
PPI_C EQU PPI_BASE+3
PPI_MODE EQU 9FH ; 8255模式寄存器初始化值
; 8259初始化参数
PIC_BASE EQU 20H
PIC_CTRL EQU PIC_BASE
PIC_DATA EQU PIC_BASE+1
PIC_ICW1 EQU 11H ; 初始控制字1
PIC_ICW2 EQU 20H ; 中断向量号为20H
PIC_ICW3 EQU 04H ; 主芯片连接从芯片
PIC_ICW4 EQU 01H ; 8086模式
; 中断服务程序
ISR PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
; 读取键盘输入,处理数据
IN AL, PPI_A
AND AL, 0F0H
CMP AL, 0B0H
JE KEY_UP
CMP AL, 0A0H
JE KEY_DOWN
CMP AL, 090H
JE KEY_ENTER
JMP ISR_END
KEY_UP:
; 处理按键UP
JMP ISR_END
KEY_DOWN:
; 处理按键DOWN
JMP ISR_END
KEY_ENTER:
; 处理按键ENTER
JMP ISR_END
ISR_END:
; 结束中断服务程序
OUT PIC_CTRL, 20H ; 发送中断结束信号
POP DX
POP CX
POP BX
POP AX
IRET ; 中断返回
ISR ENDP
; 主程序
MAIN PROC
; 初始化8255
MOV AL, PPI_MODE
OUT PPI_CTRL, AL
; 初始化8259
MOV AL, PIC_ICW1
OUT PIC_CTRL, AL
MOV AL, PIC_ICW2
OUT PIC_DATA, AL
MOV AL, PIC_ICW3
OUT PIC_DATA, AL
MOV AL, PIC_ICW4
OUT PIC_DATA, AL
; 设置中断向量表
MOV AX, ISR
MOV DS:[20H], AX
; 启用中断
MOV AL, 0
OUT PIC_DATA, AL
; 循环等待
MOV AH, 4CH
INT 21H
MAIN ENDP
```
以上代码只是一个示例,具体的实现方式可能会有所不同,需要根据具体的硬件设计和需求进行调整。
阅读全文