完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
c51单片机,怎样实现当A按键按下时执行for循环,然后在按下B按键,跳出for循环执行其他程序。
程序如下: start() { for(i=0; i<10000;i++) { P2^0 = 1; delay(500); P2^0 = 0; delay(100); } } switch (key) { case A: start(); break; case B: P2^0=0;break; } |
|
相关推荐
11个回答
|
|
|
因为你是在循环里,所以还是在循环里判断,而且switch语句最好不要直接判断按键,而是把按键的按下定义成两个数字,这样在跳出case A后会直接进入case B,否则可能会需要再按一次才能进入case B,不过一般情况下,按照7楼的做法已经能达到要求了。
最佳答案
|
|
|
|
|
|
很简单嘛~~~~你晓得 线程 吗?用 A线程来结束 B线程;用 B线程来结束 A线程 不就可以啦!
|
|
|
|
|
|
按键连接在外中断。
|
|
|
|
|
|
51有线程?? |
|
|
|
|
|
采用外部中断吧 A B 设为外部中断。
|
|
|
|
|
|
除了中断还有其他方法了没?因为用的是矩阵键盘,使用外部中断的话,就需要将这两个按键独立出来 |
|
|
|
|
|
本帖最后由 wulinwl 于 2017-2-8 13:37 编辑
在for循环里加一判断语句,用return强行退出本子程序,不执行以下任何语句。 if(key==B) { return; } |
|
|
|
|
|
看看,有什么收获??
|
|
|
|
|
|
我觉得有问题因为你是在循环里,所以还是在循环里判断,而且switch语句最好不要直接判断按键,而是把按要直接判断按键,而是把按键的按下定义成两个数字,这样在跳出case A后会直接进入case B,否则可能会需要再按一次才能进入case B,不过一般情况下,按照7楼的做法已经能达到要求了。
|
|
|
|
|
|
外部中断,执行完后关闭就可以了,遇到需要用到的程序再打开
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16900 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:38 , Processed in 1.020969 second(s), Total 104, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1271