isp1016实现机载导航系统的键盘控制
据寄存器时应撤销中断
3.4键盘处理状态机
该状态处理机是KBC处理的核心。图5是其状态转移图,其驱动时钟应该比扫描周期快而且应该是它的整数倍。此处采用的80ms时钟周期是扫描周期的8倍。下面讨论其状态转移条件。
S0:复位状态
1.记录当前扫描周期
2.if若有低电平的回复线thenS1elseS0;
S1:
1.启动延时(去抖)计数器,延时10.24ms
2.无条件进入下一状态S2
S2:去抖状态
if去抖正确thenS3
elseS0
S3:确认状态
1.将有效键值打入FIFO缓冲
2.设置
4改进建议
上述KBC完全可以满足一般系统对键盘的要求,但仍然可以改进以使之更加智能化。例如使CPU能够对KBC的读操作和写入控制字进行适当控制、使KBC可处理组合按键和按键连击、增加KBC多字节的缓冲等。上述功能完全可以根据设计者系统和应用程序的要求进行改进。本设计源代码使用的是ABLE硬件描述语言,对此感兴趣的同志可以和作者进行联系。
3.4键盘处理状态机
该状态处理机是KBC处理的核心。图5是其状态转移图,其驱动时钟应该比扫描周期快而且应该是它的整数倍。此处采用的80ms时钟周期是扫描周期的8倍。下面讨论其状态转移条件。
S0:复位状态
1.记录当前扫描周期
2.if若有低电平的回复线thenS1elseS0;
S1:
1.启动延时(去抖)计数器,延时10.24ms
2.无条件进入下一状态S2
S2:去抖状态
if去抖正确thenS3
elseS0
S3:确认状态
1.将有效键值打入FIFO缓冲
2.设置
4改进建议
上述KBC完全可以满足一般系统对键盘的要求,但仍然可以改进以使之更加智能化。例如使CPU能够对KBC的读操作和写入控制字进行适当控制、使KBC可处理组合按键和按键连击、增加KBC多字节的缓冲等。上述功能完全可以根据设计者系统和应用程序的要求进行改进。本设计源代码使用的是ABLE硬件描述语言,对此感兴趣的同志可以和作者进行联系。
- 上一篇论文: 无刷直流电机控制器MC33035的原理及应用
- 下一篇论文: 用TestStand构建通讯产品并行测试平台