单片机按键短按和长按的程序

2024-11-20 11:35:33
推荐回答(3个)
回答1:

不能给你程序,只能给你思路。

设置定时器(建设100ms),在设置一个变量x,(100ms自加1)
在主循环中判断按键是否按下,并判断x的值大小;

假设 x每隔100ms加1
y是按键状态(为1表示按下,为0 表示未按)
z记录按键状态的(初始值0)
b 记录长安 a记录短按
eg:

if(!z)
{
if(y)
{
a=1;
z=1;
}
}
else if(x>10)// 1s
{
b=1;
}

回答2:

设置定时器100毫秒中断a值自家1
设置按键值位变量k
设置按键端口k1
if (!k1)按键按下

delay(20);去痘
if (!k1)确认按下
a=0;计时数清0 确保长按时间精准
while(!k1)按钮没释放 死循环检测按下时间
if(a>30)达到3000毫秒
k=!k按键值取反 没按前为0 长按3秒后为1 短案无效

回答3:

可以参考下:

网页链接