while應用迴圈次數問題c語言微控制器

2022-07-07 12:37:16 字數 3025 閱讀 9375

1樓:匿名使用者

你所有四段**,大括號都是沒有任何用處的,有和沒有一樣。

你第一和第二段**,是等效的,迴圈都是249+248要實現249*248次迴圈,應該這樣:

i1=250;

while(--i1)//不要分號;

用兩個變數控制。

2樓:

249+248

執行空指令時可不加,就是直接分號。

3樓:做而論道

這段**迴圈多少次?是 249+248次還是249*248次。

--這裡是兩個迴圈:

--迴圈次數分別是 250、249。

其實這是微控制器led燈程式的乙個延時函式,我加入{}巢狀}發現led燈閃爍差不多;

--你寫的這兩個括號{},和沒有寫,是一樣的。

--並沒有形成巢狀。

而發現led燈閃爍塊很多。

--i,大概是 unsigned char 型,不能超過 255。

--超過了,就自動減去 256。

這說明249*248是對的,但是while迴圈只有在後面是單指令時可以不用大括號:

--不對。

--你上面所說的,乙個都不對。

不知有沒有其他的不加大括號的情況?

--多看看別人寫的吧。

4樓:匿名使用者

你的i變數不會是char型別的吧..

c語言while迴圈無法跳出問題

5樓:匿名使用者

微控制器不是pc上的應用程式可以結束,微控制器上的程式結束後(就是main函式完成後),又會從0000h位址重新執行(就相當於復位了),所以你的while(j){}迴圈結束後又重新重頭執行,就造成你所說的一直迴圈。微控制器程式在沒寫作業系統前,一般都要有乙個超迴圈while(1){},保證其不結束(直到你關電源,或者看門狗復位,軟復位等等)。你可以如下修改:

void main (void)

counter++; //每完成一次迴圈,計數值加一}}

}你還可以改成這樣:

void main (void)}}

6樓:半滴醬油

除非斷電,否則微控制器都要執行語句。按照你的程式,當j = 0後,微控制器在執行哪條語句?答案是從頭來過。

所以程式就不可能停止。現在目的是要它停止,但是不能斷電,那微控制器就得執行語句,給一條不斷執行的空語句就ok。在p1=0x00;後加上while(1);,這是乙個死迴圈,微控制器就一直停留在while(1);。

注意要加上分號!試試看

7樓:匿名使用者

你while的括號裡條件判斷不對吧,應該是while(j > 0)

8樓:匿名使用者

j--應該放在{}這裡面!

c語言while(a--),while(--a)迴圈次數

9樓:匿名使用者

while(a--)的先判斷a的值在計算也就是說跳出時a=0然後減一,輸出為-1,而--a先計算後判斷也就是說先a=a-1後判斷a=0跳出,輸出為0

10樓:匿名使用者

做這樣的題 你只要把每一次變數的變化記錄下來就可以得出正確的結果。方法給你就不給你說結果。

11樓:文花開花謝

原來輸出為-1;

改為while(--a)後,由於是先自減,再判斷。所以,自減到0時,結束迴圈。a=0.輸出為0。

12樓:匿名使用者

換成while(--a) 時,a先自減1,,再判斷迴圈條件第一次:a=a-1=1 a!=0條件滿足繼續迴圈第二次:

a=a-1=0 a!=0條件不滿足退出迴圈故最後輸出:0

13樓:不想起啥名

a-- 先賦值 後減

--a 先減 後賦值

沒換前1

0換成while(--a),則輸出 :1

請教關於微控制器c語言中用while延時的問題

14樓:匿名使用者

延時一次為一次機器週期,但是如果要準確的話,建議用keil去debug,將你需要的週期設定,1ms,1us等,以後只需要呼叫

15樓:

首先延時函式一般採用for迴圈巢狀實現,而它們的轉化關係。你必須51指令中的時鐘週期、狀態週期、機器週期概念。c中的迴圈減其實就是彙編中的djnz指令,你先了解此指令在51中的執行週期。

在進行換算即可。

16樓:煙火夜空

晶振頻率fosc=12mhz,則機械週期 t=12/fosc=1us;程式中 的 自加(++)、自減(--) 的執行週期為1個機械週期,即1us;

若為 理想狀態,則delay(500000)的時間應該是:500000×1us=500ms;

但是,編譯軟體 要把 函式呼叫、for 語句轉換成 機器指令,這是需要一定週期的,週期長短 視不同的編譯軟體 而有所不同,目前也沒人對這個 轉換差別 做過 專業的考量,故lz 的問題,沒有確切 的答案,只能 是告訴 你,大於某個時間;如例子 的答案是 大於 500ms,但大到什麼程度,不知道,不過可以從 軟體中 單步除錯 中 得到。

向各位大大求教乙個關於微控制器while迴圈的問題

17樓:硬體開發

while(1)

上面是乙個死迴圈,while(1);裡面1是真就一直執行如果換成0就是while(0)這樣就是假,這樣大迴圈裡面就永遠都不會執行。

i = 100;

while(i)

這裡while(i)會執行100次i減到0就不會執行了這樣能理解嗎

18樓:匿名使用者

就是當條件滿足時一直執行{}內的**

19樓:匿名使用者

乙個關於微控制器while迴圈的問題

具體是什麼問題?

c語言中dowhile或者while迴圈裡能不能巢狀for迴圈

路林嘉金鑫 迴圈當然可以巢狀迴圈.就像if可以巢狀一樣.我覺得可以將最外層的do.while語句改為while 1 守望中的守護 可以。不管是do while還是while都可以巢狀for迴圈,而且可以巢狀任意多個for迴圈。不僅如此,這三種迴圈語句可以任意相互巢狀,個數不限。但是過多的迴圈巢狀 會...

c語言中while和do while迴圈的主要區別是什麼

1 迴圈結 構的表示式不同 while迴圈結構的表示式為 while 表示式 do while迴圈結構表示式為 dowhile 條件表達 2 執行時判斷方式不同 while迴圈執行時只有當滿足條件時才會進入迴圈,進入迴圈後,執行完迴圈體內全部語句至當條件不滿足時,再跳出迴圈。do while迴圈將先...

C語言中的for迴圈如果不加參與迴圈的語句是不是只是for下一行

你說的不bai完全正確 正確du答案應該是 c語言中的for迴圈zhi如dao果不版 加 那麼參與for迴圈的語句僅僅是緊挨著for迴圈的那一句權。你說的下一行如果是有幾個語句,那麼你說的就不對。而如果下一行剛好只有一句,那麼你說的是對的。所以提醒你要注意,是緊挨著for迴圈的那一句。就是下面緊接著...