关于按键的控制问题分析,多次触发和单次触发

下面这个是按键控制的正确的程序,在二次检测while(!BY1)这个是检测的关键,有的人可能会把这句话写成while(BY1==1)

理论上这两个写法是一样的,但是实际的效果是不一样的,这个我也有点迷,给大家作为一个疑惑参考吧。

void key()           //按键判断程序

{

if(BY1==0)  //判断是否按下键盘

{

delay10ms(); //延时,软件去干扰

if(BY1==0)   //确认按键按下

{

LED0=~LED0;

}

while(!BY1);//按键锁定,每按一次count只加1.

}

}

下面的这个程序是咱们正点原子的程序,写的不错,大家可以作为参考

//按键处理函数

//返回按键值

//mode:0,不支持连续按;1,支持连续按;

//0,没有任何按键按下

//1,KEY0按下

//2,KEY1按下

//3,KEY2按下

//4,KEY3按下 WK_UP

//注意此函数有响应优先级,KEY0>KEY1>KEY2>KEY3!!

u8 KEY_Scan(u8 mode)

{

static u8 key_up=1;//按键按松开标志

if(mode)key_up=1;  //支持连按

if(key_up&&(KEY00||KEY10||KEY20||WK_UP1))

{

delay_ms(10);//去抖动

key_up=0;

if(KEY0==0)return KEY0_PRES;

else if(KEY1==0)return KEY1_PRES;

else if(KEY2==0)return KEY2_PRES;

else if(WK_UP==1)return WKUP_PRES;

}else if(KEY01&&KEY11&&KEY21&&WK_UP0)key_up=1;

return 0;// 无按键按下

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值