


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 C51程序流程與控制C語(yǔ)言是一種結(jié)構(gòu)化的編程語(yǔ)言。其基本元素是模塊,它是程序的一部分, 只有一個(gè)入口和一個(gè)出口,不允許有中途插入或從模塊的其它路徑退出。C語(yǔ)言有3種基本結(jié)構(gòu):順序結(jié)構(gòu);循環(huán)結(jié)構(gòu);選擇結(jié)構(gòu);條件語(yǔ)句順序結(jié)構(gòu)的程序是最簡(jiǎn)單、最基本的程序結(jié)構(gòu),其特點(diǎn) 是按指令的排列順序一條條地執(zhí)行,如圖所示,程序先執(zhí)行 A操作,再執(zhí)行B操作,兩者是順序執(zhí)行的關(guān)系。此結(jié)構(gòu)中必包含一個(gè)判斷框,根據(jù)給定的條件P是否成立而選擇執(zhí)行 A框或B框。選擇結(jié)構(gòu)由條件語(yǔ)句構(gòu)成。條件語(yǔ)句又被稱為分支語(yǔ)句,其關(guān)鍵字是由if語(yǔ)句或switch/case構(gòu)成C語(yǔ)言提供了 3種形式的if語(yǔ)句結(jié)構(gòu):用法 1:if ( 條件表
2、達(dá)式 ) 語(yǔ)句 描述:當(dāng)條件表達(dá)式的結(jié)果為真時(shí),就執(zhí)行語(yǔ)句,否則就跳過(guò)。例: if(a>=3)b=0;用法 2:if ( 條件表達(dá)式 )語(yǔ)句 1else 語(yǔ)句 2 描述:當(dāng)條件表達(dá)式成立時(shí),就執(zhí)行語(yǔ)句1,否則就執(zhí)行語(yǔ)句 2。例:if (a=b)a+;elsea-;當(dāng)a等于b時(shí),a加1,否則a-1。用法 3:if ( 條件表達(dá)式 1)語(yǔ)句 1 ;else if ( 條件表達(dá)式 2)語(yǔ)句 2;else if ( 條件表達(dá)式 3)語(yǔ)句 3;else if ( 條件表達(dá)式 n)語(yǔ)句 n;else語(yǔ)句 m;描述:如果表達(dá)式 1 為“真”,則執(zhí)行語(yǔ)句 1,退出 if 語(yǔ)句;否則去 判斷表達(dá)式 2,如
3、果為“真”,則執(zhí)行語(yǔ)句 2,退出 if 語(yǔ)句;否則去判斷表達(dá) 式3 最后,如果表達(dá)式n也不成立,則執(zhí)行else后面的語(yǔ)句m。else和 語(yǔ)句 m 也可省略不用。例:if (a>=3)b=10;else if (a>=2)b=20;else if (a>=1)b=30;elseb=0;switch/ case 語(yǔ)句結(jié)構(gòu)我們學(xué)習(xí)了條件語(yǔ)句,用多個(gè)條件語(yǔ)句可以實(shí)現(xiàn)多方向條件分支, 但是可以發(fā)現(xiàn)使用過(guò)多的條件語(yǔ)句實(shí)現(xiàn)多方向分支會(huì)使條件語(yǔ)句嵌套過(guò)多, 程序冗長(zhǎng),這樣讀起來(lái)也很不好讀。這時(shí)使用開關(guān)語(yǔ)句同樣可以達(dá)到處理多 分支選擇的目的,又可以使程序結(jié)構(gòu)清晰。它的語(yǔ)法為下:switch (
4、 表達(dá)式 )case常量表達(dá)式 case常量表達(dá)式 case常量表達(dá)式 case常量表達(dá)式 default:語(yǔ)句 m1:語(yǔ)句1;break;2:語(yǔ)句2;break;3:語(yǔ)句3;break;n:語(yǔ)句n;break;描述:運(yùn)行中switch后面的表達(dá)式的值將會(huì)做為條件,與 case后面的 各個(gè)常量表達(dá)式的值相對(duì)比,如果相等時(shí)則執(zhí)行后面的語(yǔ)句,再執(zhí)行break(間斷語(yǔ)句)語(yǔ)句,跳出switch語(yǔ)句。如果case沒有和條件相等的值時(shí)就 執(zhí)行default后的語(yǔ)句。當(dāng)要求沒有符合的條件時(shí)不做任何處理,則可以不 寫default 語(yǔ)句。循環(huán)結(jié)構(gòu)程序循環(huán)程序的作用就是用來(lái)實(shí)現(xiàn)需要反復(fù)執(zhí)行某一部分程序行的操作
5、,有如下兩類循環(huán)結(jié)構(gòu)。在這種結(jié)構(gòu)中,當(dāng)判斷條件 P成立時(shí), 執(zhí)行循環(huán)體A部分。執(zhí)行完畢回來(lái)再一次判 斷條件P。如果條件成立則繼續(xù)循環(huán) A,否 則退出循環(huán)。通常用 while循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn),其形式如下:While (表達(dá)式)循環(huán)語(yǔ)句;描述:當(dāng)表達(dá)式為非0 “真”)時(shí),執(zhí)行while中的內(nèi)嵌循環(huán)語(yǔ)句在這種結(jié)構(gòu)中,先執(zhí)行循環(huán) A部分,然后判 斷條件P成立時(shí),執(zhí)行循環(huán)體A部分。執(zhí)行完畢 回來(lái)再一次判斷條件P。如果條件成立則繼續(xù)循 環(huán)A,否則退出循環(huán)。通常用do-while循環(huán)語(yǔ)句 來(lái)實(shí)現(xiàn),其形式如下:do循環(huán)語(yǔ)句;描述:先執(zhí)行do-while中的內(nèi)嵌循環(huán)語(yǔ)句,再判斷表達(dá)式表達(dá)式為非while (表達(dá)式
6、)(“真”)時(shí),繼續(xù)執(zhí)行內(nèi)嵌循環(huán)語(yǔ)句for循環(huán)語(yǔ)句for語(yǔ)句的一般形式為:for (表達(dá)式 1;表達(dá)式 2;表達(dá)式 3)循環(huán)語(yǔ)句;描述: 先求解表達(dá)式 1; 求解表達(dá)式 2,其值為“真”時(shí),則執(zhí)行 for 語(yǔ)句中的循環(huán)語(yǔ)句, 然后執(zhí)行第步,如果表達(dá)式2,其值為“假”時(shí),則結(jié)束循環(huán),轉(zhuǎn)到 第步。 求解表達(dá) 3; 轉(zhuǎn)回第步繼續(xù)執(zhí)行; 退出 for 循環(huán)。表1-1 C51中的關(guān)鍵字關(guān)鍵字用途說(shuō)明auto存儲(chǔ)種類說(shuō)明用以說(shuō)明局部變量,缺省值為此break程序語(yǔ)句退出最內(nèi)層循環(huán)case程序語(yǔ)句Switch語(yǔ)句中的選擇項(xiàng)char數(shù)據(jù)類型說(shuō)明單字節(jié)整型數(shù)或字符型數(shù)據(jù)con st存儲(chǔ)類型說(shuō)明在程序執(zhí)行過(guò)程中不
7、可更改的常量值con ti nue程序語(yǔ)句轉(zhuǎn)向下一次循環(huán)default程序語(yǔ)句Switch語(yǔ)句中的失敗選擇項(xiàng)do程序語(yǔ)句構(gòu)成do.while 循環(huán)結(jié)構(gòu)double數(shù)據(jù)類型說(shuō)明雙精度浮點(diǎn)數(shù)else程序語(yǔ)句構(gòu)成if.else 選擇結(jié)構(gòu)enum數(shù)據(jù)類型說(shuō)明枚舉exter n存儲(chǔ)種類說(shuō)明在其他程序模塊中說(shuō)明了的全局變量flost數(shù)據(jù)類型說(shuō)明單精度浮點(diǎn)數(shù)for程序語(yǔ)句構(gòu)成for循環(huán)結(jié)構(gòu)goto程序語(yǔ)句構(gòu)成goto轉(zhuǎn)移結(jié)構(gòu)if程序語(yǔ)句構(gòu)成if.else 選擇結(jié)構(gòu)int數(shù)據(jù)類型說(shuō)明基本整型數(shù)long數(shù)據(jù)類型說(shuō)明長(zhǎng)整型數(shù)register存儲(chǔ)種類說(shuō)明使用CPU內(nèi)部寄存的變量return程序語(yǔ)句函數(shù)返回short
8、數(shù)據(jù)類型說(shuō)明短整型數(shù)sig ned數(shù)據(jù)類型說(shuō)明有符號(hào)數(shù),二進(jìn)制數(shù)據(jù)的最高位為符號(hào) 位sizeof運(yùn)算符計(jì)算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù)static存儲(chǔ)種類說(shuō)明靜態(tài)變量struct數(shù)據(jù)類型說(shuō)明結(jié)構(gòu)類型數(shù)據(jù)swicth程序語(yǔ)句構(gòu)成switch選擇結(jié)構(gòu)typedef數(shù)據(jù)類型說(shuō)明重新進(jìn)仃數(shù)據(jù)類型疋義union數(shù)據(jù)類型說(shuō)明聯(lián)合類型數(shù)據(jù)un sig ned數(shù)據(jù)類型說(shuō)明無(wú)符號(hào)數(shù)數(shù)據(jù)void數(shù)據(jù)類型說(shuō)明無(wú)類型數(shù)據(jù)volatile數(shù)據(jù)類型說(shuō)明該變量在程序執(zhí)行中可被隱含地改變while程序語(yǔ)句構(gòu)成while和do.while循環(huán)結(jié)構(gòu)表1-2存儲(chǔ)器類型存儲(chǔ)器類型說(shuō)明data直接訪問內(nèi)部數(shù)據(jù)存儲(chǔ)器(128字節(jié)),訪問速度
9、最快bdata可位尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器(16字節(jié)),允許位與字節(jié)混合訪問idata間接訪問內(nèi)部數(shù)據(jù)存儲(chǔ)器(256字節(jié)),允許訪問全部?jī)?nèi)部地址pdata分頁(yè)訪問外部數(shù)據(jù)存儲(chǔ)器(256字節(jié)),用MOVRi指令訪問xdata外部數(shù)據(jù)存儲(chǔ)器(64KB),用MOVX DP指令訪問code程序存儲(chǔ)器(64KB ,用MOVC A+DP指令訪問表1-3 C51編譯器的擴(kuò)展關(guān)鍵字關(guān)鍵字用途說(shuō)明bit位標(biāo)量聲明聲明一個(gè)位標(biāo)量或位類型的函數(shù)sbit位標(biāo)量聲明聲明一個(gè)可位尋址變量Sfr特殊功能寄存器聲明聲明一個(gè)特殊功能寄存器Sfr16特殊功能寄存器聲明聲明一個(gè)16位的特殊功能寄存器data存儲(chǔ)器類型說(shuō)明直接尋址的內(nèi)部數(shù)
10、據(jù)存儲(chǔ)器bdata存儲(chǔ)器類型說(shuō)明可位尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器idata存儲(chǔ)器類型說(shuō)明間接尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器pdata存儲(chǔ)器類型說(shuō)明分頁(yè)尋址的外部數(shù)據(jù)存儲(chǔ)器xdata存儲(chǔ)器類型說(shuō)明外部數(shù)據(jù)存儲(chǔ)器code存儲(chǔ)器類型說(shuō)明程序存儲(chǔ)器in terrupt中斷函數(shù)說(shuō)明定義一個(gè)中斷函數(shù)reentrant再入函數(shù)說(shuō)明定義一個(gè)再入函數(shù)usi ng寄存器組定義定義芯片的工作寄存器表1-4常用轉(zhuǎn)義字符表轉(zhuǎn)義字符含義ASCII 碼(16/10 進(jìn)制)o空字符(NULL)00H/0n換行符(LF)0AH/10r回車符(CR)0DH/13t水平制表符(HT)09H/9b退格符(BS)08H/8f換頁(yè)符(FF)0CH/12&
11、#39;單引號(hào)27H/39"雙引號(hào)22H/34反斜杠5CH/92表1-5 KEIL uVisio n2 C51編譯器所支持的數(shù)據(jù)類型數(shù)據(jù)類型長(zhǎng)度值域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é)對(duì)象的地址bit位0或1sfr單字節(jié)0 255sfr16雙字節(jié)0 65535sbit位0或1表1-6運(yùn)算符優(yōu)先級(jí)和結(jié)合性級(jí)
12、別類別名稱運(yùn)算符結(jié)合性1強(qiáng)制轉(zhuǎn)換、數(shù)組、結(jié)構(gòu)、聯(lián)合強(qiáng)制類型轉(zhuǎn)換()右結(jié)合下標(biāo)存取結(jié)構(gòu)或聯(lián)合成員->或.2增量加一+左結(jié)合減量減一-指針取地址&取內(nèi)容*算術(shù)單目減-長(zhǎng)度計(jì)算長(zhǎng)度計(jì)算sizeof3算術(shù)乘*右結(jié)合除/取模%4算術(shù)和指針運(yùn)算加+減-5字位左移<<右移>>6關(guān)系大于等于>=大于>小于等于<=小于<恒等于=不等于!=7字位按位與&8按位異或A9按位或I10按位取反11邏輯邏輯與&&左結(jié)合12邏輯或II13邏輯非!14條件條件運(yùn)算?:15賦值賦值=復(fù)合賦值Op=16逗號(hào)逗號(hào)運(yùn)算右結(jié)合表1-7 AT89C51特殊功能寄存器列表(適用于同一架構(gòu)的芯片)序號(hào)符號(hào)地址注釋1*ACCE0H累加器2*BF0H乘法寄存器3*PSWD0H程序狀態(tài)字4SP81H堆棧指針5DPL82H數(shù)據(jù)存儲(chǔ)器指針低8位6DPH83H數(shù)據(jù)存儲(chǔ)器指針高8位7*IEA8H中斷允許控制器8*IPD8H中斷優(yōu)先控制器9*P080H端口 010*
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)培訓(xùn)的數(shù)字化轉(zhuǎn)型與創(chuàng)新教育方式
- 體育教師工作述職報(bào)告
- 單位年底工作總結(jié)(8篇)
- 關(guān)于中班學(xué)期個(gè)人工作計(jì)劃(6篇)
- 區(qū)塊鏈技術(shù)助力商業(yè)變革與透明度提升
- 區(qū)塊鏈在多領(lǐng)域知識(shí)版權(quán)保護(hù)中的應(yīng)用實(shí)踐
- 2025年安徽省投資集團(tuán)控股有限公司社會(huì)招聘22人筆試參考題庫(kù)附帶答案詳解
- 2025至2031年中國(guó)女裝手袋行業(yè)投資前景及策略咨詢研究報(bào)告
- 以創(chuàng)新驅(qū)動(dòng)的醫(yī)療行業(yè)變革-基于移動(dòng)互聯(lián)網(wǎng)的健康服務(wù)研究
- 廣東省湛江市本年度(2025)小學(xué)一年級(jí)數(shù)學(xué)統(tǒng)編版競(jìng)賽題(上學(xué)期)試卷及答案
- 2013-2022全國(guó)高考真題物理匯編:練習(xí)使用多用電表
- 2023年中南大學(xué)湘雅二醫(yī)院康復(fù)醫(yī)學(xué)與技術(shù)崗位招聘考試歷年高頻考點(diǎn)試題含答案解析
- GB/T 21567-2008危險(xiǎn)品爆炸品撞擊感度試驗(yàn)方法
- 《綠色建筑概論》整套教學(xué)課件
- 衛(wèi)生人才培養(yǎng)方案計(jì)劃
- DB64-T 1684-2020 智慧工地建設(shè)技術(shù)標(biāo)準(zhǔn)-(高清可復(fù)制)
- 婚喪嫁娶事宜備案表
- “三級(jí)”安全安全教育記錄卡
- 風(fēng)生水起博主的投資周記
- 賽艇賽事活動(dòng)推廣方案
- 人教版小學(xué)五年級(jí)數(shù)學(xué)競(jìng)賽試題及答案
評(píng)論
0/150
提交評(píng)論