标题: 如何编写51单片机长按加时的程序? [打印本页]

作者: EVELYN51    时间: 2022-5-22 15:25
标题: 如何编写51单片机长按加时的程序?
设置计时时间时,长按INC键可以持续增加计时时间

作者: lkc8210    时间: 2022-5-22 17:44

  1. u8 KeyVal = 0;//全局变量,用完清零
  2. void key_Proc()//单键长按,1ms中断内运行
  3. {
  4.         static u16 Delay_XD=0;                        //消抖计数
  5.         if(!INC)
  6.         {
  7.                 if(Delay_XD<0xFFFF)Delay_XD++;
  8.                 if(Delay_XD>=2000)          //2000ms
  9.                 {
  10.                         KeyVal = 10;
  11.                 }
  12.         }
  13.         else                                                        //按键抬起
  14.                 Delay_XD=0;                                        //Delay_XD清0
  15. }
  16. void Key_Proc()//键码处理,1ms中断内运行
  17. {
  18.         static u16 Delay=0;                        //消抖计数
  19.         if(KeyVal == 10)
  20.         {
  21.                 KeyVal = 0;
  22.                 if(Delay++>500)//500ms累加
  23.                 {
  24.                         Delay=0;
  25.                         num++;
  26.                 }
  27.         }else{
  28.                 Delay = 0;
  29.         }
  30. }
复制代码

作者: 君工创    时间: 2022-5-22 20:11
if(INC==0){T++;}

作者: angmall    时间: 2022-5-22 21:17
论坛有一堆可参考

http://www.51hei.com/bbs/dpj-217350-1.html
作者: zgrfox110    时间: 2022-5-22 22:33
1ms中断中判断按下就计数,没按下就清零!松手之后判断时长功能,试一下
作者: STCSTC    时间: 2022-5-22 22:41
就是写按键长按检测程序,检测到按键没有抬起,即为长按,然后变量持续增加,如果连续变化太快,加上延时间隔。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1