本案例没有使用软件消抖,需要在硬件上做消抖处理,我个人测试这个算法发现没有消抖也可以使用,只是会有10%的概率出现抖动。
改代码的效率应该会比较高,程序的输入是按键的实时电平,输出3是没有电平变化,输出1是上升沿,输出0是下降沿。
int UD_Chack(int Pin)
{
static int Last_Pin;
if(Pin<Last_Pin)//上升沿
{
Last_Pin=Pin;
return 1;
}
else if(Pin>Last_Pin)//下降沿
{
Last_Pin=Pin;
return 0;
}
else
{
return 3;
}
}
以下是串口助手显示的画面