按键超过60ms才反应是否会有迟钝感呢?
引用: 原帖由 luchao114 于 2009-5-15 17:19 发表
你的思想不错,但我试过了,结果有这样的问题:我想“连续读得同样键值的次数达到某个设定值”,肯定要定义一个全局变量,它的值是不会丢失的。假如这样:正常按下是需要60ms,假定设置20ms中断一次。如果出现20ms的 ...
我通常是这么做的,看能否供LZ参考:
1、定义1ms定时中断。(1ms仅是为了易算,慢速CPU的话可把周期改长,如5ms。下面以1ms中断为例,键值连续8ms相同则予以承认。)
2、静态局部变量:计数器cnt、上次键值cur;另置一全局flg作为按键标志对外发布。
3、进入中断后读键,若=cur,cnt不满7则加1,满7时承认该键值;若键值=cur则cnt清零,并把当前键值赋给cur(更新)。
用以上做法,如再仔细考虑一下键值发布的方式,也能很容易地做到像PC键盘那样的对长按键的连续处理:长按键时,开始是800ms后作第2次输出,以后每隔80ms输出一次。