都没人来啊 我说说我的思路,抛砖引玉了 定时中断(例如10ms) 中断后进行按键扫描,1、第一次进来后判断是否有按键操作,如果有(KeyDelayTine++),计数器KeyDelayTine加1。2.第二次进来再次判断是否又按键按下,如果有(KeyDelayTime++),计数器再加1,如没有,则计数器清零退出,判定为抖动。3.当KeyDelayTime计数器加到一定的值后(比如:2、3、根据实际情况设定这个值)再进入扫描程序,扫描按键的键值。松手后清除KeyDelayTime计数器。4.当一直按住某个按键时,KeyDelayTime会一直加,当然前面要加个判定,来防止KeyDelayTime溢出,而当KeyDelayTime达到某个值时我们可以判定为长按。
都没人来啊 我说说我的思路,抛砖引玉了 定时中断(例如10ms) 中断后进行按键扫描,1、第一次进来后判断是否有按键操作,如果有(KeyDelayTine++),计数器KeyDelayTine加1。2.第二次进来再次判断是否又按键按下,如果有(KeyDelayTime++),计数器再加1,如没有,则计数器清零退出,判定为抖动。3.当KeyDelayTime计数器加到一定的值后(比如:2、3、根据实际情况设定这个值)再进入扫描程序,扫描按键的键值。松手后清除KeyDelayTime计数器。4.当一直按住某个按键时,KeyDelayTime会一直加,当然前面要加个判定,来防止KeyDelayTime溢出,而当KeyDelayTime达到某个值时我们可以判定为长按。
举报