·上一文章:消费者希望拥有 LED 电视机
·下一文章:米波段DBF体制雷达数字接收机的实现
3 读取按键消息
3.1 设置FIFO寄存器
收到硬件中断后,先通过一次写操作设置FIFO寄存器地址:0x00。
I2C_Write(0x70,0x00)://如果写一次FIFO地址之后没有对MAX7359其他控制寄存器的读写,则下次读FIFO寄存器,可不用再写FIFO地址。
I2C_Read(0x71,字节变量);
…… //重复读FIFO直至读到代表
FIFO为空的0x3f,可以没一个最大次数,如256次,如果一次中断后读了256次FIFO里还有没读到0x3f,则软重启软重启过程如下:
I2C_Write(0x70,0x0 1,0x08);
I2C_Write(0x70,0x01,0x88);
3.2 FIFO消息的处理
处理读到的FIFO字节变量(假设变量名为:FIFO_BYTE)后,软件处理方法如下:
(1)将从FIFO收到的非0x3f的字节变量FIFO_BYTE和0x3f取与(AND 0x3f),结果值为按键值(即0至63号键中某一个被按下或释放)。
(2)再将该FIFO_BYTE和0x40取与(AND 0x40),结果为0则说明按键被按下,结果非0则说明按键被释放。如果硬件布线时使用了63号和62号键,FIFO_BYTE处理复杂,请软件设计工程师参考MAX7359编程指南的62号和63号键处理方法。
3.3 长按键处理
通常需要起一个定时器,定时检查还未收到键盘释放信息的键盘按下信息都是何时发生的,如果是当前时间减去按键按下的时间满足长按键时间,就可向上层软件发长按键消息。