怎么解决独立按键触发中断的抖动问题? | 已解决
本帖最后由 未元星系 于 2024-5-27 17:14 编辑请教独立按键触发中断的抖动问题怎么解决?之前做了按键触发中断LED闪烁两下,实际闪烁3~4下。(下降沿触发)
软件防抖或者硬件防抖 soma 发表于 2024-5-27 12:26
软件防抖或者硬件防抖
请问软件防抖具体怎么做 未元星系 发表于 2024-5-27 13:51
请问软件防抖具体怎么做
检测到按下按键后延时10ms(根据实际情况改变)左右再次检测按键是否处于按下状态如果按下执行程序,如果没有不执行。 先判断按键是否按下,如果有信号,等20ms后再判断一次,如果还有信号就确实有信号了 soma 发表于 2024-5-27 14:07
检测到按下按键后延时10ms(根据实际情况改变)左右再次检测按键是否处于按下状态如果按下执行程序,如果 ...
明白了,这个代码是在中断里设置哈? 给你一个例子
#include "reg51.h"
typedef unsigned char u8;//0 to 255
typedef unsigned int u16;//0 to 65535
bit Flag_exint0 = 0;
u8 Delay_exint0 = 0;
//External interrupt0 service routine
void exint0() interrupt 0 //(location at 0003H)
{
Flag_exint0 = 1;
Delay_exint0 = 255;
EX0 = 0;
}
void main()
{
IT0 = 1; //set INT0 int type (1:Falling 0:Low level)
EX0 = 1; //enable INT0 interrupt
EA = 1; //open global interrupt switch
while (1)
{
if(Delay_exint0>0)
{
if(INT0)//sbit in Header file
{
Delay_exint0--;
if(Delay_exint0==0)
{
IE0 = 0;
EX0 = 1;
}
}else{
Delay_exint0 = 255;
}
}
if(Flag_exint0)
{
Flag_exint0 = 0;
//your code E.g.:
P2 ^= 1;
}
}
}
加电容. 用中断检测按键并解决抖动问题用状态机是很好的选择 Lkck8210 发表于 2024-5-27 15:05
给你一个例子
多谢多谢,有些思路了
页:
[1]
2