- 單片機C語言程序設計實訓100例
- 彭偉編著
- 680字
- 2018-12-27 05:11:56
1.8 流程控制
用C語言開發(fā)單片機程序時,流程控制語句if、switch、for、while、do while、goto同樣會大量出現(xiàn),下面僅對單片機程序中幾個不同于常規(guī)的流程控制語句進行簡要說明,例如,本書案例中有類似代碼:
P1 = 0xFF; if (P1 != 0xFF) {//執(zhí)行相應操作}
讀者可能會奇怪,這里的if語句條件不是永遠不會成立嗎?實際情況是:由于P1端口外接一組按鍵,各按鍵一端連接P1端口,另一端接地,如果按鍵中有一個或多個被按下,即使P1先被賦值為0xFF,在執(zhí)行if語句之前P1端口的值仍會被按鍵改變,它不再是初值0xFF。可見,用C語言設計單片機程序時,對某寄存器或端口賦值不同于標準C語言中給某變量賦值,寄存器或端口不會一直保持程序所賦的值,其狀態(tài)會隨時因外部影響而改變。
如果編寫的程序中要用if語句進行多路平行判斷,在這種情況下,讀者可改用switch語句編寫代碼,使用switch語句時要注意各case后的break語句,恰當?shù)厥褂胋reak和省略break可以使分支獨立,或者使多個case分支公用某段操作。
在主程序中還會經(jīng)常有這樣的代碼塊:
while (1) { //循環(huán)體; }
用標準C語言編寫程序時,這段代碼中的循環(huán)體內(nèi)必定有退出循環(huán)的語句存在,但是用C語言編寫單片機程序時,讀者會發(fā)現(xiàn)幾乎多數(shù)類似程序中都找不到退出循環(huán)的語句,這是因為單片機系統(tǒng)不同于普通的軟件系統(tǒng),一旦開始運行就會一直持續(xù)下去,對外部的操作或狀態(tài)變化作出實時響應或處理,除非系統(tǒng)關(guān)閉或出現(xiàn)其他事故。
讀者還會在很多案例中發(fā)現(xiàn)主程序最后有一行代碼:
while(1); 或for(;;);
這顯然是兩個死循環(huán)語句,在出現(xiàn)該語句的案例中,外部事件的處理工作多數(shù)被放在中斷程序內(nèi),主程序一旦完成若干初始化工作后就不再執(zhí)行其他操作,它會一直停留在死循環(huán)所在行,它們相當于用匯編指令jmp $。
- 深入理解Django:框架內(nèi)幕與實現(xiàn)原理
- 我的第一本算法書
- 21天學通C++(第6版)
- HTML5入門經(jīng)典
- Extending Puppet(Second Edition)
- ArcGIS for Desktop Cookbook
- Spring Security Essentials
- Visual Studio Code 權(quán)威指南
- R Data Science Essentials
- PHP與MySQL權(quán)威指南
- XML程序設計(第二版)
- 打造流暢的Android App
- Python3從入門到實戰(zhàn)
- Vue.js項目開發(fā)實戰(zhàn)
- Mastering VMware Horizon 6