完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
while(!KEY); //等待按键释放
这个指令可以判断按键释放 ,但是缺点是按下的时候CPU一直处于等待的状态。。。 这样带来的效果是:如果是数码管显示程序,那按键不放开,数码管就灭了。。。。 这个太坑爹了{:soso_e103:} 还有什么办法能检测按键,同时又可以让CPU不用等待,去做别的事情? 达到的效果就是按键不放开数码管也不会灭?{:soso_e118:} |
|
相关推荐
8个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
请贴上代码 原理图
|
|
|
|
while(1)
{ if(K5==0) //模式选择 { delay1ms(10); if(K5==0) { xx++; } while(!K5); //等待按键释放 } if(K8==0) //确定按键,按一次取消闪烁 { delay1ms(15); if(K8==0) { xx=0; } } if(K6==0&&xx==1) //小时加1按键 { delay1ms(10); if(K6==0&&xx==1) { hour++; if(hour==24) { hour=0; } } while(!K6); //等待按键释放 } if(K6==0&&xx==2) //分钟加1按键 { delay1ms(10); if(K6==0&&xx==2) { minute++; if(minute==60) { hour++; minute=0; } } while(!K6); //等待按键释放 } if(K7==0&&xx==1) //小时减1按键 { delay1ms(10); if(K7==0&&xx==1) { hour--; if(hour==24) { hour=0; } } } while(!K6); if(xx==2&&K7==0) //分钟减1按键 { delay1ms(10); if(xx==2&&K7==0) { minute--; if(minute==-1) { minute=59; hour--; if(hour==-1) { hour=23; } } } } while(!K7); //等待按键释放 这是有按键判断的程序段 标红的地方是等待按键释放的,问题是如果按住按键不松手,主程序就会停在“while(!K7); //等待按键释放” 这些地方,然后数码管就不亮了,松开手后数码管显示才正常。。。。 |
|
|
|
这个问题俺也想知道,一起等高手解决
|
|
|
|
很简单,在加一个break控制!只用while程序不严谨,如果那个PIN出问题就一直为low,程序不是一直要等待在这里!while(!k7){ 延时;break;}。
while(T1==0) //超时限制, { timeout++; if(timeout>10000) break; } |
|
|
|
我找到方法了,把显示函数放进while(!)里面,象这样 while(!K6) { DisplayHour(hour); DisplayMinute(minute); DisplaySecond(second); daojishi(daoji); } 我这个方法比较笨,有空我再试试楼上这个方法。。。。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12009 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 14:01 , Processed in 0.503658 second(s), Total 53, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号