下面简要介绍一下键盘接口电路的工作讨程。
当键盘复位成功后,首先对8255A5的端口PB7一PB0编程为PB6=1和PB7=0,使键盘时钟线为高电平,允许键盘输出,并开启中断请求触发器(使触发器的CLR清零端口为高),键盘进入正常工作状态。每当用户按下一个健开关时,健盘接口电路就按以下步骤进行操作。
1)来自键盘的时钟信号经系统外部时钟PCLK(2.386MHz,由主机系统板提供)的同步和D触发器(74LS57)延迟和反相后,分别送到串/并转换移位寄存器(74LS322)的时钟端口(CLOCK)和中断触发器的时钟打入端口,作为它们的工作时钟。
2)74LS322是带有符号扩展端口的8位移位寄存器。按图中D1、D5和S/P端口的连接(均接+5V),该芯片具有右移、保持和清除功能。即当寄存器允许端口G和输出允许端口OE均为低电平(有效)时,键盘的串行扫描码通过键盘数据线(5芯DIN连接器插座的2脚)送到移位寄存器的D1端口,并在时钟CLOCK的作用下,逐次右移到下一位,即Qa→Qb一Qc→QD一QE一Qf→Qg一Qh。移足8位时,则将串行的扫描码转换为并行扫描码,保存在QH一QA寄存器中。同时,Qh输出高电平,送中断请求到触发器的D端口,使其置“1”,产生键盘中断请求信号iRQ1。该中断请求的类型在系统中规定为O9H类型中断。
3)高电平的键盘中断请求信号iRQ1一方面通过中断控制器8259(设在主机系统板上)向主机CPU发出中断请求信号(INTR):另一方面使移位寄存器的允许端口G变为高电平(无效),使74LS322停止工作,以确保在本次中断未响应以前,移位寄存器不再接收新的扫描码。同时,通过D触发器的端口变为低电平和OC门迫使键盘数据线变为低电平,封锁键盘输出新的扫描码。
4)当IRQ,中断请求被主机CPU响应后,进入键盘中断程序(09H类型中断),并执行之。该程序主要完成以下工作:
①从8255A-5芯片的PA7~PA0端口(口地址为60H)读取并行口按键扫描码,进行相应的ASCII码转换或状态设定。
②使PB7=1,清除键盘接口,即,使移位寄存器和中断请求触发器复位,准备接收下一个扫描码,并产生新的键盘中断。同时,通过中断触发器的Q端和OC门送出一个高电平的应答信号,表明已接收到键盘送来的扫描码,允许下一个扫描码的传送。
③接着,PB7=0,又允许键盘接口电路再次工作。