独立按键程序

独立按键程序

ID:39563032

大小:31.50 KB

页数:4页

时间:2019-07-06

独立按键程序_第1页
独立按键程序_第2页
独立按键程序_第3页
独立按键程序_第4页
资源描述:

《独立按键程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include"stc89rc52.h"sbitkey_sr1=P2^0;sbitkey_sr2=P2^2;sbitkey_sr3=P2^3;sbitkey_sr4=P2^1;#defineucharunsignedchar#defineuintunsignedint#definekey_delay_time10//按键去抖动延时的时间ucharkey_flge=0;//按键操作标志位ucharkey_value=0;//按键值#definecomtin_delaytime40//按键长按的设定时间#definecomtin_ke

2、yvalue65//按键长按后,均匀触发的时间间隔uintkey2_sr_comtin_count=0;//按键2连续触发的间隔延时计数器uintkey3_sr_comtin_count=0;//按键3连续触发的间隔延时计数器uintkey1_count_time=0;//按键1去抖动延时计数器uintkey2_count_time=0;//按键2去抖动延时计数器uintkey3_count_time=0;//按键3去抖动延时计数器uintkey4_count_time=0;//按键4去抖动延时计数器ucharkey1_lock=0

3、;//按键1触发后自锁的变量标志ucharkey2_lock=0;//按键2触发后自锁的变量标志ucharkey3_lock=0;//按键3触发后自锁的变量标志ucharkey4_lock=0;//按键4触发后自锁的变量标志/***按键扫描程序****/voidkey_scan(){if(key_sr1==1)//IO是高电平,说明按键没有被按下{key1_lock=0;//清零自锁的变量标志key1_count_time=0;//清零去抖动延时计数器}elseif(key1_lock==0)//有按键按下,且是第一次被按下{key

4、1_count_time++;//去抖动延时计数变量自加if(key1_count_time>key_delay_time)//自加超过设定的值,则按键在效{key1_count_time=0;//清零去抖动延时计数器key1_lock=1;//自锁的变量标志置1,避免一直触发key_value=1;//获取按键值key_flge=1;}}if(key_sr2==1)//IO是高电平,说明按键没有被按{key2_lock=0;//清零自锁的变量标志key2_count_time=0;//清零去抖动延时计数器}elseif(key2_

5、lock==0)//有按键按下,且是第一次被按下{key2_count_time++;//去抖动延时计数变量自加if(key2_count_time>key_delay_time)//自加超过设定的值,则按键在效{key2_count_time=0;//清零去抖动延时计数器key2_lock=1;//自锁的变量标志置1,避免一直触发key_value=2;//获取按键值key_flge=1;}}elseif(key2_count_time

6、按{key2_count_time++;}else{key2_sr_comtin_count++;//连续触发延时计数器累加if(key2_sr_comtin_count>comtin_keyvalue)//连续触发延时计数器累加到长按均匀触发值{key2_sr_comtin_count=0;//连续触发延时计数器清零key_value=2;//获取按键值key_flge=1;}}if(key_sr3==1)//IO是高电平,说明按键没有被按{key3_lock=0;//清零自锁的变量标志key3_count_time=0;//清零

7、去抖动延时计数器}elseif(key3_lock==0)//有按键按下,且是第一次被按下{key3_count_time++;//去抖动延时计数变量自加if(key3_count_time>key_delay_time)//自加超过设定的值,则按键在效{key3_count_time=0;//清零去抖动延时计数器key3_lock=1;//自锁的变量标志置1,避免一直触发key_value=3;//获取按键值key_flge=1;}}elseif(key3_count_time

8、时计数器累加超过短按的去抖动值的值,进入长按{key3_count_time++;}else{key3_sr_comtin_count++;//连续触发延时计数器累加if(key3_sr_comtin_count>comtin_key

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。