标题:
单片机按键有时会不起作用?附程序
[打印本页]
作者:
xnysfh
时间:
2023-6-25 12:48
标题:
单片机按键有时会不起作用?附程序
if(BLINK_KEY == 0)
{
if(BLINK_Shake == Long_Set_Sak)
{
if(Blink_State ++ >= 3) Blink_State = 0;
DataBuffer[0] &= 0xcf;
DataBuffer[0] |= (Blink_State << 4);
spi_send_en = 1;
}
if(BLINK_Shake++ >(Long_Set_Sak + 1))
BLINK_Shake = Long_Set_Sak +1;
}
if(BLINK_KEY)
{
BLINK_Shake = 0;
}
问:按键按下有时会不起作用,麻烦大佬解答一下
作者:
shuaishuai01
时间:
2023-6-25 14:40
你这是轮询检测的,有时不起作用可能性有:
1、你的轮询检测时间太长,比如你200ms检测一次的话,你按下按键的时刻可能还没到按键检测的执行语句,把检测时长缩短试试。
2、程序中缺少防抖语句,在网上搜一下增加按键防抖代码。
3、要不就换成按键外部中断触发,用中断绝对没问题。
作者:
yzwzfyz
时间:
2023-6-25 15:42
按键动作其实还是有点复杂的,初学者会计划不周:
1、按键会有:抖动、短按、长按、按下了、弹起了。
2、响应时机:为方便解说,就以亮灯为响应。
你打算在何时亮灯,按下亮,还是弹起亮?
3、如果按下亮,那么按下未弹起的这段时间,如何应对,例如,按了1分钟,这1分钟内按键信号如何处置?
如果弹起亮,……略,类似。
4、如何界定抖动与连续两N次按下。
处理、规划好以上问题,你的按键就灵了。
作者:
xnysfh
时间:
2023-6-25 16:59
抖动、短按、长按、按下了、弹起了这几种状态我明白,看了金沙滩老师的讲解之后我觉得他的代码有点复杂,不太好理解,就想试试这种简洁一点的,然后就出错了
作者:
lkc8210
时间:
2023-6-26 09:35
什么时候不起作用?
Blink_State的作用范围是多少?0~3?还是0~2?
作者:
xnysfh
时间:
2023-6-26 10:41
lkc8210 发表于 2023-6-26 09:35
什么时候不起作用?
Blink_State的作用范围是多少?0~3?还是0~2?
0~3,就是按下的时候有时会不起作用,随机的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1