键盘扫描方法大征集!! ! 快快进来

2019-07-14 23:27发布

在这里向大家征集按键扫描的思路和方法,我们知道在实际运用中不能写delay() 这样的延时函数来消抖的,因为单片机会在这里白白浪费一段时间任何事情都不做,可能对于一些要求不高的场合也没什么影响,这里我们不讨论这种。当然我们也不能用while()来判断按键是否已经释放,如果这样的话一直按住这个键,单片机就死在这里了。大家都是怎么写的按键扫描程序呢,说说思路呀,或者贴出程序来大家一起讨论下。共同学习,共同进步

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