一、思路 基于STM8,按键处理,思路是这样的: 每20ms左右一次去扫描按键,用一个key_now记录当前值,用key_last记录上次的值,如果key_now和key_last同时有效,则开始进行cnt++。 我设定两个阈值,LONG_PRESS为100(100*20ms=2s ...
不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。 同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文的另外一个重点。 对于老鸟,我建议直接看那两个表达式,然后自己想想就会懂的了,也不需要听我后面的自吹自擂了, ...
2016-07-11 16:02 1 2430 推荐指数:
一、思路 基于STM8,按键处理,思路是这样的: 每20ms左右一次去扫描按键,用一个key_now记录当前值,用key_last记录上次的值,如果key_now和key_last同时有效,则开始进行cnt++。 我设定两个阈值,LONG_PRESS为100(100*20ms=2s ...
:在定时器里面处理独立按键的扫描程序,可以避免上述问题。*/#include "REG52.H"#define ...
IO输入的姿势 对于IO输入采用与IO输出类似的姿势 1 使能时钟 2 初始化IO口 2.1 定义一个初始化结构体 2.2 选择要初始化的IO口 2.3 ...
一般来说按键可以用一个ADC通道来做按键的扫描工作,根据各个按键上的下拉电阻不同而识别不同种的按键状态,在按键数不多且不适合做矩阵键盘的时候而且按键数又不可忽略的占用过多的IO口这个时候可以使用ADC扫描来做按键的扫描。普通情况下一个按键可用普通IO口或者ADC端口做按键扫描。 如图,按键 ...
在按下按键的时候,在闭合和断开的瞬间有一连串的抖动。 这样一次按下的动作可能会触发很多次。 所以,当检测到按键状态变化时,不是立即去响应动作,而是先等待闭合或断开稳定后再进行处理。 按键消抖可分为硬件消抖和软件消抖。 消除抖动有软件和硬件两种方法。 通常我们用软件消抖。 最简单的消抖原理 ...
一般的按键输入软件接口程序非常简单,在程序中一旦检测到按键输入口为低电平(有时可能为高),便采用软件延时的方 法来进行消抖,然后再次检测按键输入,如果再次确认为低电平则表示有按键按下,转入执行按键处理程序。如果延时后检测的电平为高电平则放弃本次按键检测, 重新开始一次按键检测过程。在简单的系统中 ...
KEY_Scan 函数,则是用来扫描这 4 个 IO 口是否有按键按下。 KEY_Scan 函数, 支持两种扫描方式,通过 mode 参数来设置。 当 mode 为 0 的时候, KEY_Scan 函数将不支持连续按, 扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不 ...
按键局部程序分析 当 mode 为 0 的时候, KEY_Scan 函数将不支持连续按,扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,而坏处就是在需要长按的时候就不合适了。 当 mode ...