积累之按键防抖动(代码+图解)

u8 KeyValue_backup;

u8 KeyValue_cur;//当前确定的value

u16 LoopCount;//时间间隔计数

void SetKeyValue(u8 value)//value可以是高低值0或1,也可以是旋钮开关0,1,2,3,,,n
{
    if(KeyValue_backup!=value)
    {
    KeyValue_backup=value;//backup实时追随value值
    LoopCount=0;
    }
    else if(KeyValue_backup==value)//backup与value值相同时,进入计数
    {
        LoopCount++;
        if(LoopCount>20)//计数到20,按键有效
        {KeyValue_cur=KeyValue_backup;
        LoopCount=0;
        }
        else

        delayms(20);//时间间隔20ms视实际需要修改,这里白白等待时间,在实时操作系统里面就会干其他事情
    }
}

积累之按键防抖动(代码+图解)_第1张图片

你可能感兴趣的:(代码片段积累)