凑热闹我也发个使用状态机的键盘程序,支持单键和双键

[复制链接]
yang_max 发表于 2013-2-27 17:07 | 显示全部楼层
标记先
布衣1819 发表于 2013-8-7 13:25 | 显示全部楼层
学习啦,谢谢!!!
popeye021 发表于 2013-8-7 19:29 来自手机 | 显示全部楼层
标记一下
stupidboy456 发表于 2013-8-12 19:07 | 显示全部楼层
mohanwei 发表于 2010-1-22 15:35
写程序前先有这个状态迁移图,就好编写了……

好厉害啊,,楼主,,
hjl714016 发表于 2013-8-15 11:53 | 显示全部楼层
不错,但我感觉用状态机做按键扫描比较繁琐。我偏向喜欢网上提供的一个算法:
ReadData = KeyPort ^ 0xff;
Trigger  = ReadData & (ReadData ^ Continue);
Continue = ReadData;
再结合时间片轮,简洁,好用。
sunsundsp 发表于 2013-8-29 15:29 | 显示全部楼层
mark`````````
yylfcxpx168 发表于 2013-12-14 19:16 | 显示全部楼层
xuexile
nkzou 发表于 2014-6-10 11:31 | 显示全部楼层
莫〆唯影 发表于 2014-8-17 18:09 | 显示全部楼层
学习了!
xppx1987 发表于 2014-8-26 14:54 | 显示全部楼层
感谢LZ,看了这种处理方法我也将自己之前的问题一下给解决了。状态机按键放在定时中断中,每隔20ms进行按键扫描,每扫描一次得到一次按键值,怎样得到有效的按键值进而进行按键事件处理呢?这时就必须把这些按键值存入到键值缓冲区,这样才不至于造成将有效的按键值被上一次的按键值淹没覆盖或漏掉的情况,然后从缓冲区中读取键值,读一次进行一次按键事件的处理,这样能保证每次的按键值得到有效的处理。说白了这个键值缓冲队列目的就是让得到的按键值和对应的按键处理事件达成一致,一次按键值就要去执行一次按键处理事件,这样才不至于按键的动作没有得到及时有效的执行,LZ我这样的理解对么?
#DEFINE_NAME 发表于 2015-3-19 13:15 | 显示全部楼层
wsnsyy 发表于 2016-2-7 18:08 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部