标题: 求助while循环次数 附C语言代码 [打印本页]

作者: 非凡科技    时间: 2021-4-14 11:35
标题: 求助while循环次数 附C语言代码
小白一枚想写一段闪灯次数代码  代码如下
while(shan<=4) {shan++;
                        if (Cnt1s==1)
                                                yk=0;        
                      if (Cnt1s==2)
                       yk=1;}
                   }  
我想循环4次  怎么用这个代码一次也不循环  请老师指导下


作者: Stella54    时间: 2021-4-14 16:06
前面定义''shan''了吗。这里或许用for循环更好
作者: xianfajushi    时间: 2021-4-14 17:17
当shan大于后就不再进入循环,需要在某处再次处理为0才能再次进入循环,且yk变化很快让人不能及时观察到,所以,好似觉得没循环一样。
作者: ch8822    时间: 2021-4-14 17:41
shan 没有初始化,必须先写shan=1;可执行4次
作者: datouyuan    时间: 2021-4-14 18:05
你不是要求代码循环4次吧,应该是想要灯闪4下。
  1. unsigned char shan = 4;
  2. void main(void)
  3. {
  4.         while (1)
  5.         {
  6.                 if (shan)
  7.                 {
  8.                         if (bCnt1s)
  9.                         {
  10.                                 bCnt1s = 0;
  11.                                 yk = !yk;
  12.                                 shan--;
  13.                         }
  14.                 }
  15.         }
  16. }
复制代码

作者: datouyuan    时间: 2021-4-14 18:14
上楼代码是闪2下。
要闪4下第13行改为 if(yk) shan--;
或者第1行改为 unsigned char shan = 8;

作者: 非凡科技    时间: 2021-4-14 18:23
谢谢各位热心解答
作者: xjx51    时间: 2021-4-14 19:30
用for更简单啊
作者: jfmdam    时间: 2021-4-14 19:42
首先,你的闪没有初始化,单片机会随便赋值,初始化为1就行了,其次,你没有延时,单片机执行速度非常快,很快就闪完了,所以你要加延时函数
作者: man1234567    时间: 2021-4-15 17:28
不加延时真的有牛叉到能看出闪么
程序的问题:
1、初始化代码没看到,不知道在循环前 shan 的值;
2、程序中闪灯的次数和循环的次数不一样,循环2次一亮一灭算闪1次;
3、单片机是以Mhz速度进行的,你的程序就算是正常工作肉眼也看不出闪来;
此外,程序中的 Cnt1s 和 shan 的关系也没交代,是否在中断里调整 Cnt1s ?不要掖着藏着让大家盲人摸象。
作者: 名字不是重点    时间: 2021-4-16 09:55
do...while之类的循环结构,适用于不定次数的循环体,如果能确定次数,好用不过For。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1