[PIC®/AVR®/dsPIC®产品] 一个按键如何只靠延时函数实现短按和长按执行不同程序

[复制链接]
1296|6
 楼主| xinxianshi 发表于 2024-9-25 18:11 | 显示全部楼层 |阅读模式
有个应用,按钮有限,一个按钮要有2个功能,短按是一个功能,执行对应函数。长按2秒以上执行另外一个功能,如何实现呢?有没有人做过啊
hu9jj 发表于 2024-9-25 19:46 | 显示全部楼层
很容易解决的:用一个变量来记录键按下时间的长短,然后就按这个变量值的大小来分别执行多个对应函数。长、短键很容易实现,稍加训练就能实现三个功能乃至三个以上的功能,我测试时最多可达五个功能。
grfqq325 发表于 2024-9-26 10:56 | 显示全部楼层
MCC没有备注是什么意思
盗铃何须掩耳 发表于 2024-9-26 16:05 | 显示全部楼层
定时去读引脚电平
桃乐丝 发表于 2025-11-3 14:58 | 显示全部楼层
按键接输入引脚,检测到下降沿后启动延时。短延时(如 20ms)后仍按下,继续计时;若在短按阈值(如 500ms)内松开,执行短按程序。若超过阈值仍按下,标记长按,松开后执行长按程序。延时中需循环检测按键状态,避免误判,通过时间差区分两种操作,仅用延时函数即可实现。
热爱浪漫 发表于 2025-11-13 11:25 | 显示全部楼层
按键按下时启动延时,首次延时(如 20ms)防抖,确认按下后持续计时。若计时未满设定值(如 1s)释放,判定为短按,执行对应程序;若超过设定值仍按下,判定为长按,执行另一程序。释放后清零计时,循环检测按键状态,仅用延时函数即可区分。
樱花树维纳斯 发表于 2025-11-17 14:18 | 显示全部楼层
可通过两次延时判断:按键按下时启动第一次延时(如 50ms)消抖,确认按下后开始计时;松开时停止计时,若时长<设定阈值(如 500ms)为短按,执行对应程序;若≥阈值且期间未松开,则触发长按程序。需循环检测按键状态,用变量记录按下时长。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

1163

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部