独立按键 单击、双击、三连击

参考:2-5 按键进阶——独立按键的单击与双击(或多击)的编程实现_哔哩哔哩_bilibili

uchar KeyNum;
uchar key_lock_flag;
uint key_cnt;
uint key_cnt2;
uchar key_timers;

#define KEY_DELAY_TIME   20
#define KEY_LONG_TIME    1000
#define KEY_DOUBLE_TIME  500

void Key_Scan()
{
    if(!KEY1) //如果按键没有被按下
    {
        key_lock_flag=0; //清零自锁标志
        key_cnt=0; //清零计数标志
        if(key_times > 0) 
        {
            key_cnt2++;
            if(key_cnt2 > KEY_DOUBLE_TIME) //按下松开时间较长
            {
                if(key_times == 1)
                {
                   KeyNum=1;  //按键单击
                }
                key_cnt2=0; //清除双击时间间隔
                key_times=0; //清除按键次数
            }
        }
    }

    else if(!key_lock_flag) 
    {
        key_cnt++;
        if(key_cnt > KEY_DELAY_TIME)
        {
            k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值