博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用的按键/输入口检测程序
阅读量:4489 次
发布时间:2019-06-08

本文共 661 字,大约阅读时间需要 2 分钟。

最低级的就是硬延时检测了,通过硬延时10~20ms消抖。

普遍采用的都是定时扫描,通过定时中断消抖。这个是核心思想。
例举网上几个常用的算法。
1、
unsigned char Trg;//Trg(triger) 代表的是触发
unsigned char Cont;//Cont(continue)代表的是连续按下。
void KeyRead( void )
{
    unsigned char ReadData = PINB^0xff;   
    Trg = ReadData & (ReadData ^ Cont);     
    Cont = ReadData;                          
}
评:不推荐使用,原因,消抖不严格。
2、

Keradyn=Ktemp Kinput+Kreadyn-1 (Ktemp ⊙Kinput)    (1)

Ktemp=Kinput    (2)

评:推荐使用,缺点是扩展新功能不易。

3、
马老师利用状态机写的按键检测程序: ​
评:灵活多用,消抖次数更改方便。扩展多功能程序稍显复杂。
4、
上述都是用在按键检测场合,特殊IO检测可能需要多次长时间消抖。
比如车辆ACC检测,直接按下面的方式效果更好。
if(!ACC_INPUT) {
    if(accon < 10) {
       if(++accon == 10) {
           accoff = 0;
       }
    }
}
else{
    if(++accoff > 3) accon = 0;
}

转载于:https://www.cnblogs.com/iemb/archive/2013/04/27/key001.html

你可能感兴趣的文章
C语言博客作业--结构体
查看>>
MATLAB 出一张好看的图
查看>>
EmptyRecycle() 清空回收站
查看>>
CentOS5.5环境下布署LVS+keepalived
查看>>
Google 周三宣布新版Google Trend上线
查看>>
二叉搜索树(搜索二叉树)转换成一个双向链表
查看>>
(转)Linux 系统性能分析工具图解读(一、二)
查看>>
(转)python3之模块io使用流的核心工具
查看>>
阶乘模版
查看>>
ShellShock 攻击实验
查看>>
BAT及各大互联网公司前端笔试面试题--Html,Css篇
查看>>
Linux下的时间戳
查看>>
xpath的学习
查看>>
kvm系列之四:热添加技术
查看>>
grep命令
查看>>
powershell的stable和preview版本
查看>>
DateTime
查看>>
火狐浏览器设置bypass
查看>>
XMLHttpRequest 对象
查看>>
C语言中的循环结构与选择结构
查看>>