單片機c語言教程:C51循環語句

2020-12-15 電子產品世界

循環語句是幾乎每個程序都會用到的,它的作用就是用來實現需要反覆進行多次的操 作。如一個 12M 的 51 晶片應用電路中要求實現 1 毫秒的延時,那麼就要執行 1000 次空語句 才能達到延時的目的(當然能使用定時器來做,這裡就不討論),如果是寫 1000 條空語 句那是多麼麻煩的事情,再者就是要佔用很多的存儲空間。我們能知道這 1000 條空語句, 無非就是一條空語句重複執行 1000 次,因此我們就能用循環語句去寫,這樣不但使程序

本文引用地址:

http://www.eepw.com.cn/article/170881.htm

結構清晰明了,而且使其編譯的效率大大的提高。在 C 語言中構成循環控制的語句有 while,do-while,for 和 goto 語句。同樣都是起到循環作用,但具體的作用和使用方法又大不一 樣。我們具體來看看。

goto 語句

這個語句在很多高級語言中都會有,記得小時候用 BASIC 時就很喜歡用這個語句。它是 一個無條件的轉向語句,只要執行到這個語句,程序指針就會跳轉到 goto 後的標號所在的 程序段。它的語法如下:

goto 語句標號; 其中的語句標號為一個帶冒號的標識符。示例如下

void main(void)

{

unsigned char a;

start: a++;

if (a==10) goto end;

goto start;

end:;

}

上面一段程序只是說明一下 goto 的使用方法,實際編寫很少使用這樣的手法。這段程序的意思是在程序開始處用標識符「start:」標識,表示程序這是程序的開始,「end:」標識程序的 結束,標識符的定義應遵循前面所講的標識符定義原則,不能用 C 的關鍵字也不能和其它變 量和函數名相同,不然就會出錯了。程序執行 a++,a 的值加 1,當 a 等於 10 時程序會跳到 end 標識處結束程序,不然跳回到 start 標識處繼續 a++,直到 a 等於 10。上面的示例說明 goto 不但能無條件的轉向,而且能和 if 語句構成一個循環結構,這些在 C 程式設計師的程 序中都不太常見,常見的 goto 語句使用方法是用它來跳出多重循環,不過它只能從內層循環 跳到外層循環,不能從外層循環跳到內層循環。在下面說到 for 循環語句時再略為提一提。 為何大多數 C 程式設計師都不喜歡用 goto 語句?那是因為過多的使用它時會程序結構不清晰,過多的跳轉就使程序又回到了彙編的編程風格,使程序失去了 C 的模塊化的優點。

while 語句

while 語句的意思很不難理解,在英語中它的意思是「當…的時候…」,在這裡我們可 以理解為「當條件為真的時候就執行後面的語句」,它的語法如下:

while (條件表達式) 語句;

使用 while 語句時要注意當條件表達式為真時,它才執行後面的語句,執行完後再次回

到 while 執行條件判斷,為真時重複執行語句,為假時退出循環體。當條件一開始就為假時, 那麼 while 後面的循環體(語句或複合語句)將一次都不執行就退出循環。在調試程序時要注意 while 的判斷條件不能為假而造成的死循環,調試時適當的在 while 處加入斷點,也許 會使你的調試工作更加順利。當然有時會使用到死循環來等待中斷或 IO 信號等,如在第一 篇時我們就用了 while(1)來不停的輸出「Hello World!」。下面的例子是顯示從 1 到 10 的累 加和,讀者能修改一下 while 中的條件看看結果會如果,從而體會一下 while 的使用方法。

c語言相關文章:c語言教程

單片機相關文章:單片機教程

單片機相關文章:單片機視頻教程

單片機相關文章:單片機工作原理


相關焦點

  • 單片機c語言教程:C51複合語句和條件語句
    複合語句之間用{}分隔,而它內部的各條語句還是需要以分號「;」 結束。複合語句是允許嵌套的,也是就是在{}中的{}也是複合語句。複合語句在程序運行時,{}中的各行單語句是依次順序執行的。單片機C語言中能將複合語句視為一條單語句,也就是說 在語法上等同於一條單語句。
  • 單片機C語言程序設計:單只數碼管循環顯示 0~9
    /* 名稱:單只數碼管循環顯示 0~9說明:主程序中的循環語句反覆將 0~9 的段碼送至 P0 口,使數字 0~9 循環顯示 51單片機相關文章
  • 單片機C語言教程-基礎語句
    C語言入門之基礎語句  從程序流程的角度來看,程序可以分為三種基本結構,即順序結構、分支結構、循環結構。c語言提供了多種語句來實現這些程序結構。本文將介紹這些基本語句及其應用,使讀者對c程序有一個初步的認識,為以後的學習打下基矗  c程序的語句  c程序的執行部分是由語句組成的。程序的功能也是由執行語句實現的。
  • 單片機c語言教程:C51運算符和表達式
    如果你是個DELPHI 編程愛好者或是DELPHI程式設計師,你對變量的定義也許習慣了DELPHI 的關鍵字,如 int 類型常會用關鍵字Integer來定義,在用 單片機c語言時你還想用回這個的話,你能這樣寫:本文引用地址:http://www.eepw.com.cn/article/170888.htmtypedef int integer;
  • 單片機C語言教程:C51函數
    有了函數C 語言就有了模塊化的優點,一般功能較多的程序,會在編寫程序時把每項單獨的功能分成數個子程序模塊,每個子 程序就能用函數來實現。函數還能被反覆的調用,因此一些常用的函數能做成函數庫以供在編寫程序時直接調用,從而更好的實現模塊化的設計,大大提高編程工作的效率。
  • PIC單片機C語言程序設計(4)
    2.if語句  if 語句也稱為條件語句,是C 語言中轉移語句之一。在設計C 語言程序時,常常要根據某些條件以決定程序運行的流向,這時就需要if 語句來實現。
  • 結合單片機學習板學習c語言之流水燈製作--intrins.h頭文件
    本文引用地址:http://www.eepw.com.cn/article/201608/294948.htm  源程序:  /*本程序結合STC89C51使用,晶振12M,中間用到串口中斷子程序是利用STC單片機的自定義ISP下載功能,自定義下載命令是FEH,關於自定義下載請參考《用51單片機就用STC51,手把手教你STC51的ISP
  • 單片機與C語言——keil c51教程:數據類型
    程序中的循環延時時間並不是很好確定,並不太適合要求精確延時的場合,關於這方面我們以後也會做討論。這裡必須要講的是,當定義一個變量為特定的數據類型時,在程序使用該變量不應使它的值超過數據類型的值域。如本例中的變量b不能賦超出0~255的值,如for (b=0; b<255; b++)改為for (b=0; b<256; b++),編譯是可以通過的,但運行時就會有問題出現,就是說b的值永遠都是小於256的,所以無法跳出循環執行下一句P1_1 = 1,從而造成死循環。同理a的值不應超出0~65535。大家可以燒片看看實驗的運行結果,同樣軟體仿真也是可以看到結果的。
  • 單片機c語言教程:C51運算符和表達式(指針和地址運算符)
    指針是單片機C語言中一個十分重要的概念,也是學習單片機C語言中的一個難點。對於指針將會在第九課中做詳細的講解。在這裡我們先來了解一下單片機C語言中供給的兩個專門用於指針和地址的運算符:本文引用地址:http://www.eepw.com.cn/article/170885.htm* 取內容 取地址取內容和地址的一般形式分別為:變量 = * 指針變量 指針變量 = 目標變量
  • c語言入門教程
    這本書被 C語言開發者們稱為"K&R",很多年來被當作 C語言的非正式的標準說明。人們稱這個版本的 C語言為"K&R C"。  c語言宣傳圖1970到80年代,C語言被廣泛應用,從大型主機到小型微機,也衍生了C語言的很多不同版本。
  • 單片機教程:PIC單片機C語言程序設計(五)
    接前文:單片機教程:PIC單片機C語言程序設計(四)   九、C語言的運算符   C語言提供了30多個運算符,範圍很大,應用廣。除了控制語句和輸入、輸出之外,幾乎所有的基本操作,都是按照運算符來進行處理的,可見其在C語言中的重要性。  1.C語言運算符的作用與分類  C語言的運算符可以靈活地與運算對象組合成運算表達式。按其在表達式中的作用,運算符可分成基本運算符和其他運算符。
  • PIC單片機C語言程序設計(5)
    除了控制語句和輸入、輸出之外,幾乎所有的基本操作,都是按照運算符來進行處理的,可見其在C語言中的重要性。  1.C語言運算符的作用與分類  C語言的運算符可以靈活地與運算對象組合成運算表達式。按其在表達式中的作用,運算符可分成基本運算符和其他運算符。
  • 單片機c語言中的左移右移
    例如:a = 0x8f; // 10001111a << 2; // 左端移出的值丟棄,右端補0結果:a = 0x3c (00111100)本文引用地址:http://www.eepw.com.cn/article/201611/321270.htm在keil c51
  • 寫出高效優美的單片機C語言代碼
    數組與指針語句具有十分密碼的關係,一般來說,指針比較靈活簡潔,而數組則比較直觀,容易理解。對於大部分的編譯器,使用指針比使用數組生成的代碼更短,執行效率更高。但是在Keil中則相反,使用數組比使用的指針生成的代碼更短。
  • 基於proteus的51單片機仿真實例三十三、C語言的goto無條件轉移...
    它是將程序運行的流向轉到它所指定的標號處去執行2、結構化程序設計方法主張限制使用goto語句,因為濫用goto語句將使程序流程無規律,可讀性差。但也不是絕對禁止使用goto語句,一般來說,可以有兩種用途1)與if語句一起構成循環結構2)從循環體內跳轉到循環體外,但在c語言中可以使用break語句和continue語句跳出本層循環和結束本次循環,goto語句的使用機 會已大大減少,只是需要從多層循環的內層循環跳到外層循環時才用到goto語句。
  • 單片機C語言延時需注意的問題
    標準的C語言中沒有空語句。但在單片機的C語言編程中,經常需要用幾個空指令產生短延時的效果。這在彙編語言中很容易實現,寫幾個nop就行了。對於延時比較長的,要求在大於10us,採用C51中的循環語句來實現。  在選擇C51中循環語句時,要注意以下幾個問題  第一、定義的C51中循環變量,儘量採用無符號字符型變量。  第二、在FOR循環語句中,儘量採用變量減減來做循環。  第三、在do…while,while語句中,循環體內變量也採用減減方法。
  • PIC單片機C語言程序設計(2)
    數據是實現功能的過程,功能是數據運算(或處理)的結果,沒有數據,C程序就無法實現單片機規定的功能,可見數據在C語言程序中的重要性。  C語言的數據類型,有基本型、構造型、指針型三類。對此,筆者將在使用時逐一介紹。
  • 51系列單片機學習5—C編程程序語句
    複合語句在程序運行時,{}中的各行單語句是依次順序執行的。單片機C語言中能將複合語句視為一條單語句,也就是說在語法上等同於一條單語句。對於一個函數而言,函數體就是一個複合語句,也許大家會因此知道複合語句中不單能用可執行語句組成,還能用變量定義語句組成。
  • 基於C語言51單片機電子密碼鎖的設計與仿真
    電子密碼鎖通常使用ARM和單片機控制,單片機相對ARM實現較為簡單,功能較為完善,因此使用單片機控制較多。用單片機控制的窖碼鎖常使用彙編語言編寫程序,顯示器多數用。而本文所介紹的電子密獁鎖使用移植性及可讀性強的高級語言C語言編寫,便於修改和增減功能蚤同時採用顯示清楚數碼管,功率消耗小而且壽命長的 液晶顯示器,顯示更加直觀,使用更加方便。
  • 單片機C語言code與data的作用
    code的作用是告訴單片機,我定義的數據要放在ROM(程序存儲區)裡面,寫入後就不能再更改,其實是相當與彙編裡面的尋址MOVC(好像是),因為