网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月04日漏签0天
单片机吧 关注:212,040贴子:1,047,375
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 12回复贴,共1页
<<返回单片机吧
>0< 加载中...

一个是switch case内嵌了一个for循环,怎么让for循环中途退出?

  • 只看楼主
  • 收藏

  • 回复
  • xiang1029
  • 中尉
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有个switch case如下
case 2:
for(a=10;a>0;a--)
{
led1=0; led2=0;
delay_ms(1000);
led1=1; led2=1;
delay_ms(1000);
}
break;
case 3:
//case是判断按键的次数,case2时候led闪烁10次,目前的程序是,进入case2后闪烁10次灭,再次期间按键一次,要等10次闪烁结束后才进入case3,
我想知道如何实现在case期间任何时候按键立即进入case3?
搞了几天试过if(key==0)break;还是不行,求指点,不胜感激。


  • xiang1029
  • 中尉
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
补充,如果吧for(a=10;a>0;a--)去掉,加上if(key==0) break;可立即跳出


2025-08-04 04:25:36
广告
不感兴趣
开通SVIP免广告
  • 萨佛131
  • 少将
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
整个程序的思路有严重问题。
不该把switch条件分支这么个办法来运用。
一个浪费资源的delay函数就平白消耗掉1秒,你编程是跟师娘学的?不会用定时器中断?


  • xiang1029
  • 中尉
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void INT2() interrupt 10
{
EA=0;
if(key==0)
{
delay_ms(30);
if(key==0)
{
n++;
if(n==6)
n=0;
while(!key);
}
}
EA=1;
}
用的这个中断,n的值就是case的值,代表按键次数,多谢指点


  • xiang1029
  • 中尉
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
就是想从for循环中检查到下次按键就立即跳出


  • 火透
  • 上校
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序有几个问题:首先延时1s,这么浪费单片机资源的,用定时器中断来做比较合适,1s之内单片机只能响应中断,其他就什么都不能做,所以不一定能响应,可将延时改小。
2、关于按键处理,其实在中断响应里了,如果加if,break应该没什么效果。如果在for循环里加if(n!=2) break;


  • 萨佛131
  • 少将
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个中断响应里面有个while(!key);
这样不按键就会吊死。
我的那个新型时钟的帖子,里面有单按键长短识别的内容。原理是每10ms左右采样一次key,然后存在一个unsigned long 变量里面,采样一次左移一位。全为0就有320ms,短按键可得到key_up的信号。
然后,根据按键的情况,变换你的主程序的状态。比如,主程序有10个状态,短按键一次就步进一次,到末尾再循环。主程序在while(1)循环里面根据不同的状态值,进入不同的显示处理等进程。最后,显示部分也不能与主程序或者按键处理挂钩,要用独立的中断始终循环进行。


  • 奋进love
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你可以用while(key&&a) { a++; 。。。}
这样有两种结束循环方法。一是key,二是循环次数


2025-08-04 04:19:36
广告
不感兴趣
开通SVIP免广告
  • lgliang355355
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个程式可以不用switch来做,用一个for循环搞定。按不同的按键改变i的值就行了


  • xiang1029
  • 中尉
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
多谢指点,我在试试


  • 张念鹏吖
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 12回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示