找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2382|回復(fù): 10
收起左側(cè)

求助while循環(huán)次數(shù) 附C語(yǔ)言代碼

[復(fù)制鏈接]
ID:101869 發(fā)表于 2021-4-14 11:35 | 顯示全部樓層 |閱讀模式
小白一枚想寫一段閃燈次數(shù)代碼  代碼如下
while(shan<=4) {shan++;
                        if (Cnt1s==1)
                                                yk=0;        
                      if (Cnt1s==2)
                       yk=1;}
                   }  
我想循環(huán)4次  怎么用這個(gè)代碼一次也不循環(huán)  請(qǐng)老師指導(dǎo)下

回復(fù)

使用道具 舉報(bào)

ID:271144 發(fā)表于 2021-4-14 16:06 | 顯示全部樓層
前面定義''shan''了嗎。這里或許用for循環(huán)更好
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2021-4-14 17:17 | 顯示全部樓層
當(dāng)shan大于后就不再進(jìn)入循環(huán),需要在某處再次處理為0才能再次進(jìn)入循環(huán),且yk變化很快讓人不能及時(shí)觀察到,所以,好似覺(jué)得沒(méi)循環(huán)一樣。
回復(fù)

使用道具 舉報(bào)

ID:905783 發(fā)表于 2021-4-14 17:41 | 顯示全部樓層
shan 沒(méi)有初始化,必須先寫shan=1;可執(zhí)行4次
回復(fù)

使用道具 舉報(bào)

ID:887371 發(fā)表于 2021-4-14 18:05 | 顯示全部樓層
你不是要求代碼循環(huán)4次吧,應(yīng)該是想要燈閃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. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:887371 發(fā)表于 2021-4-14 18:14 | 顯示全部樓層
上樓代碼是閃2下。
要閃4下第13行改為 if(yk) shan--;
或者第1行改為 unsigned char shan = 8;
回復(fù)

使用道具 舉報(bào)

ID:101869 發(fā)表于 2021-4-14 18:23 | 顯示全部樓層
謝謝各位熱心解答
回復(fù)

使用道具 舉報(bào)

ID:884042 發(fā)表于 2021-4-14 19:30 | 顯示全部樓層
用for更簡(jiǎn)單啊
回復(fù)

使用道具 舉報(bào)

ID:900662 發(fā)表于 2021-4-14 19:42 | 顯示全部樓層
首先,你的閃沒(méi)有初始化,單片機(jī)會(huì)隨便賦值,初始化為1就行了,其次,你沒(méi)有延時(shí),單片機(jī)執(zhí)行速度非?欤芸炀烷W完了,所以你要加延時(shí)函數(shù)
回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2021-4-15 17:28 | 顯示全部樓層
不加延時(shí)真的有牛叉到能看出閃么
程序的問(wèn)題:
1、初始化代碼沒(méi)看到,不知道在循環(huán)前 shan 的值;
2、程序中閃燈的次數(shù)和循環(huán)的次數(shù)不一樣,循環(huán)2次一亮一滅算閃1次;
3、單片機(jī)是以Mhz速度進(jìn)行的,你的程序就算是正常工作肉眼也看不出閃來(lái);
此外,程序中的 Cnt1s 和 shan 的關(guān)系也沒(méi)交代,是否在中斷里調(diào)整 Cnt1s ?不要掖著藏著讓大家盲人摸象。
回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2021-4-16 09:55 | 顯示全部樓層
do...while之類的循環(huán)結(jié)構(gòu),適用于不定次數(shù)的循環(huán)體,如果能確定次數(shù),好用不過(guò)For。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表