欢迎来到天天文库
浏览记录
ID:27312305
大小:15.37 KB
页数:4页
时间:2018-12-02
《51单片机定时器按键判断方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、51单片机定时器按键判断方法本文介绍了一种使用定时器精确判断按键时间的方法,可以通过查询keypress_time来判断当前按键时间,结合处理程序,可以对按键行为进行更加方便的控制。以下为51单片机部分代码。#defineKEY_TIME_S5#defineKEY_TIME_L150volatilebitkey_check_flag=0;volatileunsignedcharkeypress_time=0;//按键检查voidcheck_key(void){if(key_check_flag==1)//为了只在定时器更新时检查,减少cpu浪费{key_check_f
2、lag=0;4if(keypress_time>KEY_TIME_S&&keypress_time<(2*KEY_TIME_S))//单击事件判断{//在此添加单击事件处理程序}if(keypress_time>KEY_TIME_L){//在此添加长按事件处理程序}}}//定时器2初始化voidTimer2Init(void)//10毫秒@12.000MHz{AUXR&=0xFB;//定时器时钟12T模式T2L=0xF0;//设置定时初值T2H=0xD8;//设置定时初值AUXR
3、=0x10;//定时器2开始计时IE2
4、=0x04;4}//定时器2中断检查按键状态vo
5、idkey_check(void)interrupt12{IE2&=~0x04;//若需要手动清除中断标志,可先关闭中断,此时系统会自动清除内部的中断标志key_check_flag=1;if(key==0){keyup_time=0;if(keypress_time<255)keypress_time++;elsekeypress_time=255;}else4{keypress_time=0;if(keyup_time<255)keyup_time++;elsekeyup_time=255;}IE2
6、=0x04;}4
此文档下载收益归作者所有