完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
按键长按与短按处理程序[C语言]--通過測試
#define PRESSED 0 #define Long_cnt 65534 //長鍵判斷值 #define Short_cnt 250 //短鍵判斷值,消抖动 void Key_Pressed(void) { unsigned int counter=0; //用做判断按键长按,短按的计数器 /********************key3_3*********************/ if(Key_up==PRESSED) { while(Key_up==PRESSED) //计数,用来判断是长按还是短按 { if( (counter++) > Long_cnt) //counter>65534:长按, { Key_Code=KEY_FP_UP; //KEY1长按时返回的键值 return; } } if(counter<=Long_cnt && counter>Short_cnt) //counter<=65534:短按,counter>20:消抖动 { Key_Code=KEY_FP_UP; //KEY1短按时返回的键值 return; } } /********************key3_5*********************/ if(Key_down==PRESSED) { while(Key_down==PRESSED) //计数,用来判断是长按还是短按 { if( (counter++) > Long_cnt) //counter>65534:长按, { Key_Code=KEY_FP_DOWN; //KEY1长按时返回的键值 // counter=0; return; } } if(counter<=Long_cnt && counter>Short_cnt) //counter<=65534:短按,counter>20:消抖动 { Key_Code=KEY_FP_DOWN; //KEY1短按时返回的键值 // counter=0; return; } } /********************key3_7*********************/ if(Key_start==PRESSED) { while(Key_start==PRESSED) //计数,用来判断是长按还是短按 { if( (counter++) > Long_cnt) //counter>65534:长按 { Key_Code=KEY_FP_ENTER; //KEY1长按时返回的键值 // counter=0; return; } } if(counter<=Long_cnt && counter>Short_cnt) //counter<=65534:短按,counter>20:消抖动 { Key_Code=KEY_FP_SELECT; //KEY1短按时返回的键值 // counter=0; return;
} } /*****************************************************/ } |
|
相关推荐
|
|
谢谢 不错的东西
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2042 浏览 1 评论
3218 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2281 浏览 2 评论
2711 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
3940 浏览 5 评论
870浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6277浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-6 20:23 , Processed in 0.599218 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号