独立按键程序.doc_第1页
独立按键程序.doc_第2页
独立按键程序.doc_第3页
独立按键程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include stc89rc52.hsbit key_sr1=P20;sbit key_sr2=P22;sbit key_sr3=P23;sbit key_sr4=P21;#define uchar unsigned char#define uint unsigned int #define key_delay_time 10 / 按键去抖动延时的时间uchar key_flge=0; /按键操作标志位 uchar key_value=0; /按键值#define comtin_delaytime 40 /按键长按的设定时间#define comtin_keyvalue 65 /按键长按后,均匀触发的时间间隔uint key2_sr_comtin_count=0;/按键2连续触发的间隔延时计数器uint key3_sr_comtin_count=0;/按键3连续触发的间隔延时计数器uint key1_count_time=0;/按键1去抖动延时计数器uint key2_count_time=0; /按键2去抖动延时计数器uint key3_count_time=0;/按键3去抖动延时计数器uint key4_count_time=0;/按键4去抖动延时计数器uchar key1_lock=0;/按键1触发后自锁的变量标志uchar key2_lock=0;/按键2触发后自锁的变量标志uchar key3_lock=0;/按键3触发后自锁的变量标志uchar key4_lock=0;/按键4触发后自锁的变量标志/*按键扫描程序*/void key_scan() if(key_sr1=1)/IO是高电平,说明按键没有被按下 key1_lock=0;/清零自锁的变量标志 key1_count_time=0;/清零去抖动延时计数器else if(key1_lock=0)/有按键按下,且是第一次被按下 key1_count_time+;/去抖动延时计数变量自加 if(key1_count_timekey_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;/清零去抖动延时计数器else if(key2_lock=0) /有按键按下,且是第一次被按下 key2_count_time+; /去抖动延时计数变量自加 if(key2_count_timekey_delay_time)/自加超过设定的值,则按键在效 key2_count_time=0;/清零去抖动延时计数器 key2_lock=1; /自锁的变量标志置1 ,避免一直触发 key_value=2;/获取按键值 key_flge=1; else if(key2_count_timecomtin_keyvalue) /连续触发延时计数器累加到长按均匀触发值 key2_sr_comtin_count=0; /连续触发延时计数器清零 key_value=2; /获取按键值 key_flge=1; if(key_sr3=1) /IO是高电平,说明按键没有被按 key3_lock=0; /清零自锁的变量标志 key3_count_time=0;/清零去抖动延时计数器else if(key3_lock=0)/有按键按下,且是第一次被按下 key3_count_time+;/去抖动延时计数变量自加 if(key3_count_timekey_delay_time)/自加超过设定的值,则按键在效 key3_count_time=0; /清零去抖动延时计数器 key3_lock=1;/自锁的变量标志置1 ,避免一直触发 key_value=3;/获取按键值 key_flge=1; else if(key3_count_timecomtin_keyvalue)/连续触发延时计数器累加到长按均匀触发值 key3_sr_comtin_count=0; /连续触发延时计数器清零 key_value=3; /获取按键值 key_flge=1; if(key_sr4=1) /IO是高电平,说明按键没有被按 key4_lock=0; /清零自锁的变量标志 key4_count_time=0; /清零去抖动延时计数器else if(key4_lock=0) /有按键按下,且是第一次被按下 key4_count_time+; /去抖动延时计数变量自加 if(key4_count_timekey_delay_time) /自加超

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论