| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5454 人关注过本帖
标题:求助:if语句执行过程中条件改变如何才能继续执行后面的语句?
只看楼主 加入收藏
yang7403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-4-27
结帖率:0
收藏
已结贴  问题点数:20 回复次数:12 
求助:if语句执行过程中条件改变如何才能继续执行后面的语句?
例:
void main()  
{
while(1)
{
if(P0_0==1) //如果P0.0为高电平
{
LED=0; //点亮一个LED灯
delayms(5000); //如果在这个延时的5秒内,P0.0转为了低电平,程序则不会继续执行后面的语句,我需要继续执行,该如何处理?
......
}
}
}

以上请大位大虾指点,谢谢。在线等 ,急!!!
搜索更多相关主题的帖子: 条件 void LED灯 高电平 在线 
2012-04-27 13:27
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:7 
程序代码:
void main() 
{
while(1)
{
if(P0_0==1) //如果P0.0为高电平
{
LED=0; //点亮一个LED灯
delayms(5000); //如果在这个延时的5秒内,P0.0转为了低电平,程序则不会继续执行后面的语句,我需要继续执行,该如何处理?
if(P0_0==0)
    break;
}
}
}

延时之后做个P0_0的判断就可以了吧,break跳出循环

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-04-27 13:29
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:7 
在延时函数内部判断P0.0的状态,当P0.0为0时结束延时循环直接返回。

重剑无锋,大巧不工
2012-04-27 13:37
yang7403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-4-27
收藏
得分:0 
跳出循环还会执行后面的语句吗?
2012-04-27 13:48
yang7403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-4-27
收藏
得分:0 
我的实例程序如下,请帮忙直接修改一下:
void int0(void) interrupt 0 using 0
{
delay1ms(20);
if(k3==0)
{

delay1ms(1000);
if(P1==0xff)  //如果P1口全为高电平
{
delay1ms(300);    //延时0.3秒
if(P1==0xff)  //如果P1还是全为高电平
{
 LED1=0;
 JDQ=0; //在这里继电器吸合后,P1立即改变不再为OXFF了,此程序就不再往下执行,请改一下,可以继续执行下面的语句。
if(P1!=0xff)
break; //用这样的话编绎会出错
delay1ms(3000);
 
 if(k1==1 & k2==1)
 {
 LED=0;
 OKBeep();
 LED=1;
 LED1=1;
 JDQ=1;
 //delay1ms(2000);

 }
}

}
}
}
2012-04-27 13:59
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
break是用来跳出循环体的,你这里没有循环,编译器找不到跳出点,所以报错。

我还是没理解。你是希望P0的状态改变后马上结束3秒的延时过程,直接执行之后的语句么? 如果是,再回答我一个问题,你对时间的精度要求有多高?

重剑无锋,大巧不工
2012-04-27 14:13
yang7403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-4-27
收藏
得分:0 
对时间精度要求不高。
JDQ=0后,P1的状态会马上发生改变,此时如果不处理程序就不会继续往下执行,我要的结果是P1状态改变后继续执行后面的延时3秒和后面的语句。谢谢
2012-04-27 14:18
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
处理什么?P1状态的判断在你继电器置0之前。所以之后代码的执行根本和P1的状态无关(至少在你的代码看来是这样的),怎么会执行不下去呢?

我也在不解中。不过你的int0中的延时处这么多。你的系统中一共有几个进程?怎么分配的时间?

这样吧,如果你愿意请详细描述一下你的系统在做什么?希望实现什么样的执行过程?

重剑无锋,大巧不工
2012-04-27 14:29
yang7403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-4-27
收藏
得分:0 
程序就2个功能
2012-04-27 14:39
yang7403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-4-27
收藏
得分:0 
程序就2个功能:首先判断P1口的状态,P1口接了2个电流表,电流表通电的时候P1口全为高电平,再吸合继电器导通另一个电流表(同时原来的2个电流表断电了,P1口不再全为高电平)。第2步:继电器吸合后等3秒,根据后面接通的电流表状态选择声音报警或不报警。 问题就出在了吸合继电器后,P1口状态一改变就不去检测后面电流表的状态了。
2012-04-27 14:44
快速回复:求助:if语句执行过程中条件改变如何才能继续执行后面的语句?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027165 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved