可以间接消抖的按键长按短按识别
按键按下时触发按键计时,按键释放结束计时,计时时间 Tkey < Tshort 时,判为短按。Tkey > Tlong 时,判为长按。按键在触发时需要消除抖动,抖动本质上也是一次极短的短按,因此可以根据短按时间来消除抖动。定时器定时扫描端口,源代码如下:
if (D_keyDown()){
if (x_key.keyTmCnt < D_maxCntNum) {
x_key.keyTmCnt++;
}
if (x_key.keyTmCnt >= D_timeShortKey) /* 大于D_minTimeFilter判为有效按键,短按 */
{
x_key.shortKeyFlag = D_TRUE;
}
if (x_key.keyTmCnt >= D_timeLongKey) /* 长按 */
{
x_key.keyState = D_keyPushLong;
if (x_key.shortKeyFlag == D_TRUE)
{
x_key.shortKeyFlag = D_FALSE; /* 清楚短按标志,防止误触发,很重要 */
}
}
}else{
x_key.keyTmCnt = 0;
if (x_key.shortKeyFlag == D_TRUE){
x_key.shortKeyFlag = D_FALSE;
x_key.keyState = D_keyPushShort;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论