![單片機C51程序結(jié)構(gòu)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/b6a7ca76-1b64-4441-813d-fd23e7e71d96/b6a7ca76-1b64-4441-813d-fd23e7e71d961.gif)
![單片機C51程序結(jié)構(gòu)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/b6a7ca76-1b64-4441-813d-fd23e7e71d96/b6a7ca76-1b64-4441-813d-fd23e7e71d962.gif)
![單片機C51程序結(jié)構(gòu)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/b6a7ca76-1b64-4441-813d-fd23e7e71d96/b6a7ca76-1b64-4441-813d-fd23e7e71d963.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 C51程序流程與控制C語言是一種結(jié)構(gòu)化的編程語言。其基本元素是模塊,它是程序的一部分, 只有一個入口和一個出口,不允許有中途插入或從模塊的其它路徑退出。C語言有3種基本結(jié)構(gòu):順序結(jié)構(gòu);循環(huán)結(jié)構(gòu);選擇結(jié)構(gòu);條件語句順序結(jié)構(gòu)的程序是最簡單、最基本的程序結(jié)構(gòu),其特點 是按指令的排列順序一條條地執(zhí)行,如圖所示,程序先執(zhí)行 A操作,再執(zhí)行B操作,兩者是順序執(zhí)行的關(guān)系。此結(jié)構(gòu)中必包含一個判斷框,根據(jù)給定的條件P是否成立而選擇執(zhí)行 A框或B框。選擇結(jié)構(gòu)由條件語句構(gòu)成。條件語句又被稱為分支語句,其關(guān)鍵字是由if語句或switch/case構(gòu)成C語言提供了 3種形式的if語句結(jié)構(gòu):用法 1:if ( 條件表
2、達式 ) 語句 描述:當(dāng)條件表達式的結(jié)果為真時,就執(zhí)行語句,否則就跳過。例: if(a>=3)b=0;用法 2:if ( 條件表達式 )語句 1else 語句 2 描述:當(dāng)條件表達式成立時,就執(zhí)行語句1,否則就執(zhí)行語句 2。例:if (a=b)a+;elsea-;當(dāng)a等于b時,a加1,否則a-1。用法 3:if ( 條件表達式 1)語句 1 ;else if ( 條件表達式 2)語句 2;else if ( 條件表達式 3)語句 3;else if ( 條件表達式 n)語句 n;else語句 m;描述:如果表達式 1 為“真”,則執(zhí)行語句 1,退出 if 語句;否則去 判斷表達式 2,如
3、果為“真”,則執(zhí)行語句 2,退出 if 語句;否則去判斷表達 式3 最后,如果表達式n也不成立,則執(zhí)行else后面的語句m。else和 語句 m 也可省略不用。例:if (a>=3)b=10;else if (a>=2)b=20;else if (a>=1)b=30;elseb=0;switch/ case 語句結(jié)構(gòu)我們學(xué)習(xí)了條件語句,用多個條件語句可以實現(xiàn)多方向條件分支, 但是可以發(fā)現(xiàn)使用過多的條件語句實現(xiàn)多方向分支會使條件語句嵌套過多, 程序冗長,這樣讀起來也很不好讀。這時使用開關(guān)語句同樣可以達到處理多 分支選擇的目的,又可以使程序結(jié)構(gòu)清晰。它的語法為下:switch (
4、 表達式 )case常量表達式 case常量表達式 case常量表達式 case常量表達式 default:語句 m1:語句1;break;2:語句2;break;3:語句3;break;n:語句n;break;描述:運行中switch后面的表達式的值將會做為條件,與 case后面的 各個常量表達式的值相對比,如果相等時則執(zhí)行后面的語句,再執(zhí)行break(間斷語句)語句,跳出switch語句。如果case沒有和條件相等的值時就 執(zhí)行default后的語句。當(dāng)要求沒有符合的條件時不做任何處理,則可以不 寫default 語句。循環(huán)結(jié)構(gòu)程序循環(huán)程序的作用就是用來實現(xiàn)需要反復(fù)執(zhí)行某一部分程序行的操作
5、,有如下兩類循環(huán)結(jié)構(gòu)。在這種結(jié)構(gòu)中,當(dāng)判斷條件 P成立時, 執(zhí)行循環(huán)體A部分。執(zhí)行完畢回來再一次判 斷條件P。如果條件成立則繼續(xù)循環(huán) A,否 則退出循環(huán)。通常用 while循環(huán)語句來實現(xiàn),其形式如下:While (表達式)循環(huán)語句;描述:當(dāng)表達式為非0 “真”)時,執(zhí)行while中的內(nèi)嵌循環(huán)語句在這種結(jié)構(gòu)中,先執(zhí)行循環(huán) A部分,然后判 斷條件P成立時,執(zhí)行循環(huán)體A部分。執(zhí)行完畢 回來再一次判斷條件P。如果條件成立則繼續(xù)循 環(huán)A,否則退出循環(huán)。通常用do-while循環(huán)語句 來實現(xiàn),其形式如下:do循環(huán)語句;描述:先執(zhí)行do-while中的內(nèi)嵌循環(huán)語句,再判斷表達式表達式為非while (表達式
6、)(“真”)時,繼續(xù)執(zhí)行內(nèi)嵌循環(huán)語句for循環(huán)語句for語句的一般形式為:for (表達式 1;表達式 2;表達式 3)循環(huán)語句;描述: 先求解表達式 1; 求解表達式 2,其值為“真”時,則執(zhí)行 for 語句中的循環(huán)語句, 然后執(zhí)行第步,如果表達式2,其值為“假”時,則結(jié)束循環(huán),轉(zhuǎn)到 第步。 求解表達 3; 轉(zhuǎn)回第步繼續(xù)執(zhí)行; 退出 for 循環(huán)。表1-1 C51中的關(guān)鍵字關(guān)鍵字用途說明auto存儲種類說明用以說明局部變量,缺省值為此break程序語句退出最內(nèi)層循環(huán)case程序語句Switch語句中的選擇項char數(shù)據(jù)類型說明單字節(jié)整型數(shù)或字符型數(shù)據(jù)con st存儲類型說明在程序執(zhí)行過程中不
7、可更改的常量值con ti nue程序語句轉(zhuǎn)向下一次循環(huán)default程序語句Switch語句中的失敗選擇項do程序語句構(gòu)成do.while 循環(huán)結(jié)構(gòu)double數(shù)據(jù)類型說明雙精度浮點數(shù)else程序語句構(gòu)成if.else 選擇結(jié)構(gòu)enum數(shù)據(jù)類型說明枚舉exter n存儲種類說明在其他程序模塊中說明了的全局變量flost數(shù)據(jù)類型說明單精度浮點數(shù)for程序語句構(gòu)成for循環(huán)結(jié)構(gòu)goto程序語句構(gòu)成goto轉(zhuǎn)移結(jié)構(gòu)if程序語句構(gòu)成if.else 選擇結(jié)構(gòu)int數(shù)據(jù)類型說明基本整型數(shù)long數(shù)據(jù)類型說明長整型數(shù)register存儲種類說明使用CPU內(nèi)部寄存的變量return程序語句函數(shù)返回short
8、數(shù)據(jù)類型說明短整型數(shù)sig ned數(shù)據(jù)類型說明有符號數(shù),二進制數(shù)據(jù)的最高位為符號 位sizeof運算符計算表達式或數(shù)據(jù)類型的字節(jié)數(shù)static存儲種類說明靜態(tài)變量struct數(shù)據(jù)類型說明結(jié)構(gòu)類型數(shù)據(jù)swicth程序語句構(gòu)成switch選擇結(jié)構(gòu)typedef數(shù)據(jù)類型說明重新進仃數(shù)據(jù)類型疋義union數(shù)據(jù)類型說明聯(lián)合類型數(shù)據(jù)un sig ned數(shù)據(jù)類型說明無符號數(shù)數(shù)據(jù)void數(shù)據(jù)類型說明無類型數(shù)據(jù)volatile數(shù)據(jù)類型說明該變量在程序執(zhí)行中可被隱含地改變while程序語句構(gòu)成while和do.while循環(huán)結(jié)構(gòu)表1-2存儲器類型存儲器類型說明data直接訪問內(nèi)部數(shù)據(jù)存儲器(128字節(jié)),訪問速度
9、最快bdata可位尋址內(nèi)部數(shù)據(jù)存儲器(16字節(jié)),允許位與字節(jié)混合訪問idata間接訪問內(nèi)部數(shù)據(jù)存儲器(256字節(jié)),允許訪問全部內(nèi)部地址pdata分頁訪問外部數(shù)據(jù)存儲器(256字節(jié)),用MOVRi指令訪問xdata外部數(shù)據(jù)存儲器(64KB),用MOVX DP指令訪問code程序存儲器(64KB ,用MOVC A+DP指令訪問表1-3 C51編譯器的擴展關(guān)鍵字關(guān)鍵字用途說明bit位標(biāo)量聲明聲明一個位標(biāo)量或位類型的函數(shù)sbit位標(biāo)量聲明聲明一個可位尋址變量Sfr特殊功能寄存器聲明聲明一個特殊功能寄存器Sfr16特殊功能寄存器聲明聲明一個16位的特殊功能寄存器data存儲器類型說明直接尋址的內(nèi)部數(shù)
10、據(jù)存儲器bdata存儲器類型說明可位尋址的內(nèi)部數(shù)據(jù)存儲器idata存儲器類型說明間接尋址的內(nèi)部數(shù)據(jù)存儲器pdata存儲器類型說明分頁尋址的外部數(shù)據(jù)存儲器xdata存儲器類型說明外部數(shù)據(jù)存儲器code存儲器類型說明程序存儲器in terrupt中斷函數(shù)說明定義一個中斷函數(shù)reentrant再入函數(shù)說明定義一個再入函數(shù)usi ng寄存器組定義定義芯片的工作寄存器表1-4常用轉(zhuǎn)義字符表轉(zhuǎn)義字符含義ASCII 碼(16/10 進制)o空字符(NULL)00H/0n換行符(LF)0AH/10r回車符(CR)0DH/13t水平制表符(HT)09H/9b退格符(BS)08H/8f換頁符(FF)0CH/12&
11、#39;單引號27H/39"雙引號22H/34反斜杠5CH/92表1-5 KEIL uVisio n2 C51編譯器所支持的數(shù)據(jù)類型數(shù)據(jù)類型長度值域un sig ned char單字節(jié)0 255sig ned char單字節(jié)-128 + 127un sig ned int雙字節(jié)0 65535sig ned int雙字節(jié)-32768+32767un sig ned long四字節(jié)095sig ned long四字節(jié)-48 +47float四字節(jié)士士 +38*13字節(jié)對象的地址bit位0或1sfr單字節(jié)0 255sfr16雙字節(jié)0 65535sbit位0或1表1-6運算符優(yōu)先級和結(jié)合性級
12、別類別名稱運算符結(jié)合性1強制轉(zhuǎn)換、數(shù)組、結(jié)構(gòu)、聯(lián)合強制類型轉(zhuǎn)換()右結(jié)合下標(biāo)存取結(jié)構(gòu)或聯(lián)合成員->或.2增量加一+左結(jié)合減量減一-指針取地址&取內(nèi)容*算術(shù)單目減-長度計算長度計算sizeof3算術(shù)乘*右結(jié)合除/取模%4算術(shù)和指針運算加+減-5字位左移<<右移>>6關(guān)系大于等于>=大于>小于等于<=小于<恒等于=不等于!=7字位按位與&8按位異或A9按位或I10按位取反11邏輯邏輯與&&左結(jié)合12邏輯或II13邏輯非!14條件條件運算?:15賦值賦值=復(fù)合賦值Op=16逗號逗號運算右結(jié)合表1-7 AT89C51特殊功能寄存器列表(適用于同一架構(gòu)的芯片)序號符號地址注釋1*ACCE0H累加器2*BF0H乘法寄存器3*PSWD0H程序狀態(tài)字4SP81H堆棧指針5DPL82H數(shù)據(jù)存儲器指針低8位6DPH83H數(shù)據(jù)存儲器指針高8位7*IEA8H中斷允許控制器8*IPD8H中斷優(yōu)先控制器9*P080H端口 010*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄭東新區(qū)河道清淤施工方案
- 湘教版數(shù)學(xué)八年級上冊1.4《分式的加法和減法》聽評課記錄5
- 2022年新課標(biāo)八年級上冊道德與法治《第十課 建設(shè)美好祖國 》聽課評課記錄(2課時 )
- 數(shù)學(xué)在生活中的應(yīng)用
- 新版華東師大版八年級數(shù)學(xué)下冊《17.4反比例函數(shù)》聽評課記錄23
- 勞務(wù)合同范本2020簡易版
- 三年級上冊數(shù)學(xué)單元測試卷-第八單元-分?jǐn)?shù)的初步認(rèn)識-西師大版(含答案)
- 人教版地理七年級上冊3.3《降水的變化與分布》聽課評課記錄1
- 2025年度物聯(lián)網(wǎng)技術(shù)應(yīng)用合同協(xié)議樣本
- 蘇科版九年級數(shù)學(xué)聽評課記錄:第30講 圓與圓的位置關(guān)系的應(yīng)用
- 護理診斷及護理措施128條護理診斷護理措施
- 情商知識概述課件
- 九年級物理總復(fù)習(xí)教案
- 【64精品】國標(biāo)蘇少版小學(xué)音樂六年級下冊教案全冊
- 天然飲用山泉水項目投資規(guī)劃建設(shè)方案
- 汽車座椅骨架的焊接夾具論文說明書
- 2019年重慶市中考物理試卷(a卷)及答案
- [重慶]房建和市政工程質(zhì)量常見問題防治要點
- 信義玻璃參數(shù)表
- 發(fā)電機組自動控制器
- 人教版四年級下冊語文字帖-直接打印
評論
0/150
提交評論