
实际一个按键由按下到释放时键盘将按照如下的规定向主机发送数据:
只要一个按键被按下,这个键的通码(MAKE)就会被发送到主机。通码只
表示键盘上的一个按键,它不表示印刷在按键上的那个字符。这就意味着在通码
和 ASCII 码之间没有已定义好的关联,直到主机把扫描码翻译成一个字符或命令。
虽然多数第二套扫描码通码只有一个字节,但也有少数扩展按键的通码是两
字节或四字节,这类的通码第一个字节总是 E0H(如“END”、“HOME”……)。正如
按键被按下通码就被发往主机一样,只要按键一被释放,断码也会被发送。每个
键都有自己唯一的通码和断码,幸运的是,我们并不用总是通过查表来找出所有
按键的断码—在通码和断码之间存在着必然的联系,多数第二套断码有两个字节,
他们的第一个字节是 F0H,第二个字节则是这个键的通码。
例如,当我们按下键盘上的”A”键时,键盘就会向主机发送”A”键对应的通码
(MAKE)”1C”,如果一直按着这个按键不释放,那么在一个短暂的延时之后,键
盘会再次开始以一定的速率持续向主机发送”1C“,直到该按键被释放。在该按键被
释放后,键盘将会向主机发送”A“的断码(BREAK),即首先发送”F0“,然后下一个字
节再马上发送”1C“。
如果我们按下的是”END”、”PAGE UP“等扩展按键时,会怎么样呢?这里
以”END“键举例。当”END“键被按下后,键盘会首先向主机发送”E0”,然后发送”F0”,
最后再发送”69“。
由上述分析可知,我们 FPGA 在解码到一次数据后,还需要对这个数据进行
分析判断,判断该数据是否为断码标志”F0“以及扩展码标志”E0”。
4. 系统结构框图
评论0