完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用STC12c5a60s2做定时器中断扫描按键,可是出现了一个奇葩问题!想不通!请大神帮忙。。出现的问题是:单个按键按下都能够正确检测,很快的连续按下多个按键,按键响应也是正常的,可是这个时候,key8按键无效了,怎么按都没反应,复位后又有效了。。。我将所有按键同时按下,并且复位,这个时候的第八个按键也是无效的,只有不按按键复位,key8按键才有效。。。这到底是什么问题啊?想不通!
按键在P0口又上拉电阻10K! uchar idata flag_key1=0; uchar idata flag_count_key1=0; uchar idata key1_rock_time=0; uchar idata flag_key2=0; uchar idata flag_count_key2=0; uchar idata key2_rock_time=0; uchar idata flag_key3=0; uchar idata flag_count_key3=0; uchar idata key3_rock_time=0; uchar idata flag_key4=0; uchar idata flag_count_key4=0; uchar idata key4_rock_time=0; uchar idata flag_key5=0; uchar idata flag_count_key5=0; uchar idata key5_rock_time=0; uchar idata flag_key6=0; uchar idata flag_count_key6=0; uchar idata key6_rock_time=0; uchar idata flag_key7=0; uchar idata flag_count_key7=0; uchar idata key7_rock_time=0; uchar idata flag_key8=0; uchar idata flag_count_key8=0; uchar idata key8_rock_time=0; /*----------按键扫描函数------*/ void keyscan() { //----------------按键1-----------------// if(key1==0 && flag_key1==0) { key1_rock_time++; if(key1_rock_time>=3) //去抖 { flag_key1=1; key1_rock_time=0; ///------------按键信号处理----------------/// (省略此处)。。。 } else if(key1==1 && flag_key1==0) //抖动 { key1_rock_time=0; } else if(key1==1 && flag_key1==1) //刚松手 { key1_rock_time=0; flag_count_key1++; // flag_key1=0; // flag_key1_over=1; } if(flag_count_key1>10) //按键松手后,10*5ms=50ms内不检测按键(定时器5ms) { flag_key1=0; flag_count_key1=0; key1_rock_time=0; } //----------------按键2-----------------// -------相同的方式写了8个按键------ } void PCA_Routine(void) interrupt 7 { CCF0 = 0; //Clear interrupt flag 5ms CCAP0L = value; CCAP0H = value >> 8; //Update compare value value += PCA_time; //------------代码----------// rock_beep_fire(); //-------------------------扫描分数-------------------------// keyscan(); //按键扫描 } |
|
相关推荐
2个回答
|
|
看你的看得头疼,你来看我的吧,参考的吴坚鸿的代码以及我老师的框架。我有一个扫面按键函数和一个按键功能执行函数,分开的。对松手不做处理,不理睬。 |
|
|
|
void keypro(void)//按键处理
{ if( key_funcode == UP_100HZ ) //处理频率控制字 { key_funcode = NONE; ……………………………………………… |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
644 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1819 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1262 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1136 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1357 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 16:53 , Processed in 0.607219 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号