完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
while((a<50) && (GPIO_KEY!=0xf0)) //检测按键松手检测
{ Delay10ms(1); a++; } 就是(a<50) && (GPIO_KEY!=0xf0)这里 |
|
相关推荐
6个回答
|
|
|
while(!key);
比如现在按键是已经按下(就是单片机的一个引脚接了低电平即key=0),!key就是!0,因为!0=1,所以就是变成while(1);也就是进入循环,知道松开按键key=1时,那么!key=0,也就是while(0);这是就跳出循环。检测完毕 |
|
|
|
|
破力达 发表于 2015-12-08 00:13 打错一个词,把“知道”改为“当” |
|
|
|
|
|
就是检测按键输入在一段时间内是否放开,两个条件,小于50ms并且键值不等于0xf0
只要其中一个不满足,就退出循环 while((a<50) && (GPIO_KEY!=0xf0)) //检测按键松手检测 { Delay10ms(1); a++; } 单单看这个片段,这个松手检测有一些问题 1、如果50ms内按键不变,那么意味着程序要在这里循环50ms,就是说,按键的时候,程序卡一下,无论在中断内还是主循环,等待50ms显然是低效率的行为。 2、如果50ms超过了,键值没变,检测到的数据可能是错误的 |
|
|
|
|
|
限时检测,时间是500ms,时间到或GPIO_KEY输入无变化放弃检测。
|
|
|
|
|
|
(a<50) && (GPIO_KEY!=0xf0)的意思是当这两个条件有一个不满足是就跳出等待,之所以加一个(a<50) 是为了防止程序死在这里,好多检测应答的程序都是这样的,当超过一定时间后就默认达到自己想要的那个要求了,有效防止由于程序死循环导致程序跑飞发生。
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
234 浏览 0 评论
514 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
826 浏览 0 评论
1366 浏览 2 评论
814 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16911 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 05:02 , Processed in 0.693569 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4882