请问一下这个函数是怎么做到按键消抖的

2019-03-24 17:31发布


以下是扫描消抖函数:
void keyscan()
{
        if(s2==0)  //S2是一个独立按键
        {
                while(s2==0);  //想问的是为什么如果此处的S2一直按着不松手,应该是NUM一直在加,但实际上为什么只是松开时
                num++;        //才加一次呢?如果在按的过程中有抖动,那么也应该会不规则连加几次啊,他这是怎么做到去抖的呢?
        }
}


望请各位大师解惑!!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
philipchiu
1楼-- · 2019-03-26 06:30
8楼的解释跟我意思一样
ienglgge
2楼-- · 2019-03-26 06:30
 精彩回答 2  元偷偷看……
16816
3楼-- · 2019-03-26 09:29
ienglgge 发表于 2016-7-28 23:14
楼主应该好好学学C语言基础。另外,这种方式个人觉得不太好,在这里死等。效率低,容易出问题。

谢谢,因为是自学的,所以基础不好,不知还有更高效的方法吗
ienglgge
4楼-- · 2019-03-26 15:19
16816 发表于 2016-7-31 16:42
谢谢,因为是自学的,所以基础不好,不知还有更高效的方法吗

设一个变量。按键按下后,变量开始加。每次只是判断,而不是while循环,这样,主循环其他内容也可以执行。当变量达到某个值,认为是稳定的按下。再执行对应动作。如果没有达到某个值,就抬起,就是认为抖动。不管。
strong161
5楼-- · 2019-03-26 17:29
 精彩回答 2  元偷偷看……
硕果累累
6楼-- · 2019-03-26 18:06
就是一个分号的作用,去掉试试

一周热门 更多>