标题:
单片机按键长短按源程序(不需要通过等待来判定)
[打印本页]
作者:
九零后大将
时间:
2018-7-25 22:18
标题:
单片机按键长短按源程序(不需要通过等待来判定)
从做项目编写的程序里拆解出来
单片机源程序如下:
uint m;
static uchar flag_key=1; //按键松开标志
static uchar pass=0; //长按动作标志,为1时,长按已动作,为0时长按未动作
if(KEY==0)
{
flag_key=0; //按键按下标志
m++;
}
else
flag_key=1; //按键松开标志
if((flag_key==1)&&(m>10)&&(m<500)) //按键松开,并且m值处于10~500之间,为短按
{
m=0; //m值清零
//短按操作内容
}
if((m>=500)&&(pass==0)) //判断是否是长按并且是否已动作,如果是长按并且未动作执行下面括号内的语句
{
pass=1; //长按动作置1表示长按已动作
//长按操作内容
}
if(KEY==1) //判断按键是否松开,松开的话执行下面语句
{
pass=0; //长按动作标志位置0为下次长按做准备
m=0; //m值清零,为下次按键按下做准备
}
m值大小根据需要进行调整
复制代码
以上程序51hei提供打包下载:
按键长短按.rar
(524 Bytes, 下载次数: 165)
2018-7-25 22:17 上传
点击文件名下载附件
作者:
维超
时间:
2018-7-26 10:25
好思路,下载收藏以后借鉴
作者:
yadjt
时间:
2019-2-11 08:58
学习学习,谢谢分享!
作者:
jeffphoon
时间:
2019-2-19 08:38
刚好要用到,谢谢了!!
作者:
快乐眼泪
时间:
2019-4-20 19:56
正在学习,收藏了!
作者:
yasi666
时间:
2019-9-18 15:13
学习了,谢谢分享
作者:
chscn
时间:
2019-9-18 18:27
看了代码 ,感觉还是要 不停的调用这个“函数”,再判断
作者:
stlong
时间:
2019-9-19 08:49
感谢楼主,已学习
作者:
m182892
时间:
2019-9-19 14:57
这种方法有没有做按键双击的。
作者:
hmgqljz111
时间:
2019-9-19 15:27
谢谢楼主分享
作者:
守候枫林红叶时
时间:
2019-10-17 19:11
谢谢分享!学习了。
作者:
榆林上校
时间:
2019-11-6 02:54
嗯,不错的资料,谢谢分享!
作者:
精彩一刻
时间:
2020-11-22 00:04
刚刚在学单片机,搜了下长、短按的方法,就看到这个帖子了。
首先多谢楼主,学习了。
其次看了下代码,是不是这样的:
短按总是检测按键弹起时执行动作,意思是按键按下后m开始计时,然后判断弹起了,且是很短的延时就是短按。
如果按下后计时时间较长,那就是长按了。
但是我想无论长按还是短按都是在检测下按键被按下后立即动作,此时如何判断短按还是长按呢?且只能执行短按或长按的动作,而不能先执行短按的动作,再接着执行长按的动作,这个是不是比较不好实现呢?
作者:
HEGUANGKUO65667
时间:
2021-10-23 13:19
请问各位师傅,有没有独立按键实现多个功能,使用定时器写的程序。发来学习一下。谢谢。
作者:
杨天想
时间:
2021-10-23 16:17
HEGUANGKUO65667 发表于 2021-10-23 13:19
请问各位师傅,有没有独立按键实现多个功能,使用定时器写的程序。发来学习一下。谢谢。
短按,长按,双击?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1