1. 硬件连接
先看一下硬件的连接:
键盘里有个 8048 芯片,当按下某个按键时, 8048 就把这个键对应的数值发送给 8042 ,8042就知道是哪个键被按下了,就会给 8259A 发送中断。
一个按键被按下,产生的编码叫通码(makecode),断开时叫断码(breakcode)。
按键有 3 种状态,“按下”、“按下保持”、“弹起”。
有好几种键盘扫描码,需要一个“中间件”来隐藏各套扫描码的差异,这个“中间件”就是 8042。
总结:处理器和键盘之间的数据传输、命令控制都是通过这一中间件——8042.
其实就是 2 个端口, 4 个寄存器。
2. 编写程序
键盘的中断信号接在 8259A 主片的 IR1 上,对应的中断号就是 0x21。
所以增加中断入口程序中的0x21通道。
VECTOR 0x21,ZERO ;键盘中断对应的入口
VECTOR 0x22,ZERO ;级联用的
VECTOR 0x23,ZERO ;串口2对应的入口
VECTOR 0x24,ZERO ;串口1对应的入口
VECTOR 0x25,ZERO ;并口2对应的入口
VECTOR 0x26,ZERO