找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 651|回复: 6
收起左侧

如何编写51单片机长按加时的程序?

[复制链接]
ID:977989 发表于 2022-5-22 15:25 | 显示全部楼层 |阅读模式
设置计时时间时,长按INC键可以持续增加计时时间
回复

使用道具 举报

ID:161164 发表于 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. }
复制代码
回复

使用道具 举报

ID:965189 发表于 2022-5-22 20:11 | 显示全部楼层
if(INC==0){T++;}
回复

使用道具 举报

ID:155507 发表于 2022-5-22 21:17 | 显示全部楼层
回复

使用道具 举报

ID:525244 发表于 2022-5-22 22:33 来自手机 | 显示全部楼层
1ms中断中判断按下就计数,没按下就清零!松手之后判断时长功能,试一下
回复

使用道具 举报

ID:233291 发表于 2022-5-22 22:41 | 显示全部楼层
就是写按键长按检测程序,检测到按键没有抬起,即为长按,然后变量持续增加,如果连续变化太快,加上延时间隔。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表