普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 9308|回复: 13

大神快来,我这while循环怎么跳不出去!?

 关闭 [复制链接]

1

主题

8

帖子

33

积分

新手上路

Rank: 1

积分
33
发表于 2016-11-30 23:34:47 | 显示全部楼层 |阅读模式
void main()
{         int j=0;

      while(j<1)
   {          
       l1=0;
           delay(25000);
          

            l2=0;
           delay(25000);
          

            l3=0;
           delay(25000);
          

            l4=0;
           delay(25000);
          

            l5=0;
           delay(25000);
          

            l6=0;
           delay(25000);
          

            l7=0;
           delay(25000);
          

            l8=0;
           delay(25000);

           l1=1;
           l2=1;
           l3=1;
           l4=1;
           l5=1;
           l6=1;
           l7=1;
           l8=1;
            

           l8=0;
           delay(25000);
          
        l7=0;
           delay(25000);

          l6=0;
           delay(25000);

           l5=0;
           delay(25000);

           l4=0;
           delay(25000);

           l3=0;
           delay(25000);

           l2=0;
           delay(25000);

           l1=0;
           delay(25000);

           l1=1;
           l2=1;
           l3=1;
           l4=1;
           l5=1;
           l6=1;
           l7=1;
           l8=1;
       j++;
          
          
            
   }
   l1=0;
}
回复

使用道具 举报

1

主题

8

帖子

33

积分

新手上路

Rank: 1

积分
33
 楼主| 发表于 2016-11-30 23:36:11 | 显示全部楼层
一直在循环流水灯,用do while;while;for都试过了,都跳不出循环
回复 支持 反对

使用道具 举报

1

主题

30

帖子

421

积分

中级会员

Rank: 3Rank: 3

积分
421
发表于 2016-12-1 07:54:30 | 显示全部楼层

RE: 大神快来,我这while循环怎么跳不出去!?

daryl 发表于 2016-11-30 23:36
一直在循环流水灯,用do while;while;for都试过了,都跳不出循环

实际上程序已经跳出大循环,只不过你没有发现。程序跳出大循环必须有个地方待下去,这个地方是我们给设定的,因为你没有给它停留的地方,所以程序跳出后回到主程序又开始大循环。你的程序这样做,就可以看到跳出大循环的效果了。
#include<reg52.h>
sbit l1= P1^0;
sbit l2= P1^1;
sbit l3= P1^2;
sbit l4= P1^3;
sbit l5= P1^4;
sbit l6= P1^5;
sbit l7= P1^6;
sbit l8= P1^7;
void delay(unsigned int i)
{
  while(i--);
}
void main()
{         
  int i,j=0;
  {
  while(j<1)
   {         
     l1=0;
     delay(25000);
      l2=0;
     delay(25000);
      l3=0;
     delay(25000);
      l4=0;
     delay(25000);
      l5=0;
     delay(25000);
      l6=0;
     delay(25000);
      l7=0;
     delay(25000);
      l8=0;
     delay(25000);
     l1=1;
     l2=1;
     l3=1;
     l4=1;
     l5=1;
     l6=1;
     l7=1;
     l8=1;
     l8=0;
     delay(25000);      
     l7=0;
     delay(25000);
     l6=0;
     delay(25000);
     l5=0;
     delay(25000);
     l4=0;
     delay(25000);
     l3=0;
     delay(25000);
     l2=0;
     delay(25000);
     l1=0;
     delay(25000);
     l1=1;
     l2=1;
     l3=1;
     l4=1;
     l5=1;
     l6=1;
     l7=1;
     l8=1;
     i++;   
     if(i==5)  
       while(1)
       {
         P1=1;
       };         
   }
}
}
回复 支持 反对

使用道具 举报

1

主题

8

帖子

33

积分

新手上路

Rank: 1

积分
33
 楼主| 发表于 2016-12-1 19:13:36 | 显示全部楼层
不倒翁_W 发表于 2016-12-1 07:54
实际上程序已经跳出大循环,只不过你没有发现。程序跳出大循环必须有个地方待下去,这个地方是我们给设定 ...

我给它有地方呆啊,跳出去后L1=1
回复 支持 反对

使用道具 举报

2

主题

9

帖子

32

积分

新手上路

Rank: 1

积分
32
发表于 2016-12-1 22:35:37 | 显示全部楼层
要在l1=0;后面加个while(1);你试试看
回复 支持 反对

使用道具 举报

1

主题

30

帖子

421

积分

中级会员

Rank: 3Rank: 3

积分
421
发表于 2016-12-2 07:41:36 | 显示全部楼层

RE: 大神快来,我这while循环怎么跳不出去!?

daryl 发表于 2016-12-1 19:13
我给它有地方呆啊,跳出去后L1=1

L1=1不叫有地方呆,L1=1以后怎么办?在C语言中,程序如果没有事情处理,处于等待状态,办法很多,但都是设定一个循环体,让程序在循环体内不停地循环,程序这个等待状态,我们是看得见的。你说L1=1是程序呆的地方,那么当L1=1以后程序又到哪里去了呢,给你一个形象的比喻,程序就像一个踩高跷的人,在不运动时,站在那里,如果没有辅助依靠的东西,两条腿就得不停地踏步,否则就会失去平衡而倒地。如果我们看不到运行到哪里,那就是死机了。
回复 支持 反对

使用道具 举报

20

主题

1344

帖子

8372

积分

论坛元老

Rank: 8Rank: 8

积分
8372
发表于 2016-12-2 08:59:36 | 显示全部楼层
楼上的回答很妙啊,回答中肯、形象,有老师(很多老师都回答不了这么好)的素质
回复 支持 反对

使用道具 举报

1

主题

8

帖子

33

积分

新手上路

Rank: 1

积分
33
 楼主| 发表于 2016-12-5 21:18:07 | 显示全部楼层
不倒翁_W 发表于 2016-12-2 07:41
L1=1不叫有地方呆,L1=1以后怎么办?在C语言中,程序如果没有事情处理,处于等待状态,办法很多,但都是 ...

厉害了我的老师!我明白了
回复 支持 反对

使用道具 举报

1

主题

8

帖子

33

积分

新手上路

Rank: 1

积分
33
 楼主| 发表于 2016-12-5 21:18:52 | 显示全部楼层
HC6800-ES-V2.0 发表于 2016-12-2 08:59
楼上的回答很妙啊,回答中肯、形象,有老师(很多老师都回答不了这么好)的素质

大神就是厉害
回复 支持 反对

使用道具 举报

1

主题

8

帖子

33

积分

新手上路

Rank: 1

积分
33
 楼主| 发表于 2016-12-5 21:24:39 | 显示全部楼层
Kinya 发表于 2016-12-1 22:35
要在l1=0;后面加个while(1);你试试看

嗯嗯,我后来自己瞎摸弄明白了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-20 02:17 , Processed in 0.106980 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表