




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單元3:C51程序設(shè)計(jì)基礎(chǔ)知識(shí)與能力目標(biāo)了解C51的特點(diǎn)、關(guān)鍵字1掌握C51的數(shù)據(jù)類型(尤其是擴(kuò)展數(shù)據(jù)類型)2掌握C51的基本運(yùn)算、語句3掌握C51的函數(shù)、預(yù)處理指令4
單元3:C51程序設(shè)計(jì)基礎(chǔ)1對單片機(jī)的指令系統(tǒng)不要求了解,僅要求對8051的存貯器結(jié)構(gòu)有初步了解寄存器分配、不同存貯器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理23程序有規(guī)范的結(jié)構(gòu),可分成不同的函數(shù),這種方式可使程序結(jié)構(gòu)化具有將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀45提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能力6由于具有方便的模塊化編程技術(shù),使已編好程序可容易地移植C51的優(yōu)點(diǎn)基本數(shù)據(jù)類型類型符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255單元3:C51程序設(shè)計(jì)基礎(chǔ)2、C51的數(shù)據(jù)類型擴(kuò)展數(shù)據(jù)類型單元3:C51程序設(shè)計(jì)基礎(chǔ)2、C51的數(shù)據(jù)類型1)sfr:定義特殊功能寄存器地址。其定義的語法規(guī)則如下:sfr
特殊功能寄存器名稱=字節(jié)地址常數(shù);例如:sfrP0=0x80;//定義一個(gè)特殊功能寄存器變量P02)sfr16:定義雙字節(jié)特殊功能寄存器地址,其定義的語法規(guī)則如下:sfr16雙字節(jié)特殊功能寄存器名稱=字節(jié)地址常數(shù);例如:sfr16DPTR=0x82;//定義DPTR低端地址82H擴(kuò)展數(shù)據(jù)類型單元3:C51程序設(shè)計(jì)基礎(chǔ)2、C51的數(shù)據(jù)類型3)sbit:定義能夠按位尋址的特殊功能寄存器中的位變量,其定義的語法規(guī)則如下:sbit
位變量名=位地址表達(dá)式;這里的位地址表達(dá)式有三種形式:直接地址、特殊功能寄存器名帶位號(hào)、字節(jié)地址帶位號(hào),所以這里的定義方式有三種,分別如下:sbit
位變量名=位地址常數(shù);(位地址常數(shù):特殊功能寄存器內(nèi)的絕對位地址)sbit
位變量名=特殊功能寄存器名^位號(hào);sbit
位變量名=特殊功能寄存器字節(jié)地址^位號(hào);例:特殊功能寄存器P0口的名稱及各位的分布如下:以特殊功能寄存器P0口的P0.0位定義為例,三種定義方法如下:方法1:sbitP0_0=0x80;方法2:sbitP0_0=P0^0;方法3:sibtP0_0=0x80^0;擴(kuò)展數(shù)據(jù)類型單元3:C51程序設(shè)計(jì)基礎(chǔ)2、C51的數(shù)據(jù)類型4)bit:定義片內(nèi)RAM的位變量。其值只有0或1。但注意不能用它定義指針,也用其不能定義數(shù)組。例:bitN3_4;//定義一個(gè)片內(nèi)RAM位變量N3_4補(bǔ)充說明:1、C51編譯器在頭文件“reg51.h”中定義了全部sfr、sfr16和sbit變量,因此當(dāng)我們程序中如果需要使用這些,可以用一條預(yù)處理命令#include<reg51.h>把這個(gè)頭文件包含到C51程序中,無須重新定義即可使用。2、使用sbit的幾點(diǎn)說明:用sbit定義的位變量必須能夠按位操作,而不能對無位操作功能的位定義位變量。用sbit定義的位變量必須放在函數(shù)外面作為全局變量,而不能在函數(shù)內(nèi)部定義。用sbit每次只能定義一個(gè)位變量。單元3:C51程序設(shè)計(jì)基礎(chǔ)3、標(biāo)識(shí)符和關(guān)鍵字1)C語言中標(biāo)識(shí)符是指軟件開發(fā)者在程序中自定義的字符序列,用來命名程序中需要辨認(rèn)的對象,包括:符號(hào)常量、變量、數(shù)組及函數(shù)等。標(biāo)識(shí)符的定義注意事項(xiàng)如下:由字母、數(shù)字、下劃線構(gòu)成。首字符必須是字母或下劃線。長度不得大于32個(gè)字符,通常是8個(gè)字符。嚴(yán)格區(qū)分大小寫字母。不應(yīng)該使用C語言中的保留標(biāo)識(shí)符來做自定義的變量或函數(shù)等的標(biāo)識(shí)符。單元3:C51程序設(shè)計(jì)基礎(chǔ)3、標(biāo)識(shí)符和關(guān)鍵字2)下面列出了C語言的所有關(guān)鍵字,在使用時(shí)應(yīng)慎用這些關(guān)鍵字,不要將其作為標(biāo)識(shí)符來用:Auto、enum、restrict、unsigned、break、extern、return、void、case、float、short、volatile、char、for、signed、while、const、goto、sizeof、Bool、continue、if、static、default、inline、struct、_Imaginary、do、int、switch、double、long、typedef、else、register、union等。1)算術(shù)運(yùn)算符12注意:“/”:參與運(yùn)算的變量都是整數(shù)時(shí),結(jié)果也為整數(shù),舍去小數(shù);若除數(shù)或被除數(shù)中一個(gè)為負(fù)數(shù),則結(jié)果隨機(jī)器而定。、“%”:參與運(yùn)算的變量必須都是整數(shù)。4、C51的基本運(yùn)算單元3:C51程序設(shè)計(jì)基礎(chǔ)2)自增、自減運(yùn)算符:“++”、“--”13++i與i++的區(qū)別:舉例:i的初值為3j=++i;//先i=3+1=4,再將4賦值給jj=i++;//先將i的值3賦值給j,再將i的值加1,變?yōu)?前置運(yùn)算和后置運(yùn)算的區(qū)別:前置運(yùn)算是變量的值先加1或減1,然后再以該變量變化后額值參加其它運(yùn)算。后置運(yùn)算是變量的值先參加有關(guān)運(yùn)算,然后變量的值再加1或減1。相關(guān)知識(shí)點(diǎn)3)關(guān)系運(yùn)算符:14關(guān)系表達(dá)式一般形式:表達(dá)式關(guān)系運(yùn)算符表達(dá)式關(guān)系表達(dá)式的值:真(成立)用“1”表示
假(不成立)用“0”表示4)邏輯運(yùn)算符:15邏輯表達(dá)式一般形式:表達(dá)式邏輯運(yùn)算符表達(dá)式邏輯表達(dá)式的值:真(成立)用“1”表示
假(不成立)用“0”表示5)位運(yùn)算符:16舉例:設(shè)下列程序執(zhí)行前,value已經(jīng)定義為unsignedchar,且
value=0x83,分析每一條語句執(zhí)行后value的值。value|=0x17; //value=value&=0x34; //value=value^=0x0f; //value=value=~value; //value=value=value>>1; //value=value=value<<2;//value=0x970x14
0x1B
0xe4
0x72
0xc8
6)賦值運(yùn)算符:181)基本賦值運(yùn)算符“=”:其功能是把某個(gè)常量、變量或表達(dá)式的值賦值給另外一個(gè)變量。2)復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符有:“+=”、“-=”、“*=”、“/=”、“%=”、“^=”、“~=”、“&=”、“|=”、“<<=”、“>>=”。例如:i+=2;等價(jià)于i=i+2;a%=5;等價(jià)于a=a%5;7)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:19其一般形式為:(類型說明符)(表達(dá)式)其功能是:把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換為類型說明符所表示的類型。單元3:C51程序設(shè)計(jì)基礎(chǔ)4、C51的基本語句if語句第一種形式:if(表達(dá)式)語句舉例:輸出兩個(gè)整數(shù)中的較大者21if語句第二種形式:if(表達(dá)式)語句1;else語句2;22舉例:輸出兩個(gè)整數(shù)中的較大者23if語句第三種形式:if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3……elseif(表達(dá)式n)語句nelse語句n+124舉例:輸入1~7轉(zhuǎn)換為對應(yīng)的星期英文switch語句switch語句的一般格式是:switch(變量){ case常量1:語句1; case常量2:語句2;case常量3:語句3;…….case常量n:語句n;default:語句n+1;}執(zhí)行switch語句時(shí),將變量逐個(gè)與case后的常量進(jìn)行比較,若與其中一個(gè)相等,則執(zhí)行該常量后的語句;若都不相等,則執(zhí)行default后的語句。舉例:自動(dòng)售貨機(jī)商品價(jià)格的查詢?nèi)蝿?wù)描述:自動(dòng)售貨機(jī)可以售出薯片3.0元,爆米花2.5元,巧克力4.0元,可樂3.5元四種商品。在屏幕上顯示菜單。當(dāng)用戶輸入編號(hào)1~4時(shí),顯示相應(yīng)商品的價(jià)格;輸入其它編號(hào),顯示價(jià)格為0。解決方案:(1)定義整型變量x用于存放用戶輸入編號(hào)(2)定義雙精度實(shí)型變量y用于存放價(jià)錢(3)根據(jù)x值使用switch語句判斷用戶選擇商品價(jià)格y的值(4)輸出商品價(jià)格y程序while語句一般格式:while(表達(dá)式)
循環(huán)體語句;執(zhí)行過程:30任務(wù)描述:小張的行李箱密碼忘記,密碼是四位,每位密碼是由0~9之間的數(shù)字構(gòu)成。請編寫模擬小張尋找密碼的過程。舉例:尋找密碼任務(wù)分析:密碼是一個(gè)四位整數(shù),而四位整數(shù)的取值范圍是0000~9999,共計(jì)10000個(gè),那么我們需要在這10000個(gè)四位整數(shù)中逐個(gè)尋找,直到找到與密碼符合的四位整數(shù)為止。32解決方案:(1)定義整形變量password用于存放密碼(2)定義整形變量value,賦初值0,用于存放每次比較的四位整數(shù)(3)用value的值與password的值進(jìn)行比較,若不相等則修改value的值(value++)繼續(xù)進(jìn)行比較,直到找到為止(4)輸出找到的四位密碼(5)返回程序do-while語句一般格式:do{
循環(huán)體語句;}while(表達(dá)式);執(zhí)行過程:35請用do-while語句改寫上面尋找密碼的函數(shù)。for語句一般格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
循環(huán)體語句;}執(zhí)行過程:37表達(dá)式1:初值表達(dá)式,對循環(huán)變量賦初值表達(dá)式2:條件表達(dá)式,給出循環(huán)的條件循環(huán)體語句:被反復(fù)執(zhí)行的語句表達(dá)式3:步長表達(dá)式,改變循環(huán)變量的值任務(wù)描述:由計(jì)算機(jī)隨機(jī)生成100以內(nèi)的一個(gè)整數(shù),用鍵盤輸入你猜的整數(shù)(假定1~99內(nèi)),與計(jì)算機(jī)產(chǎn)生的被猜數(shù)比較,若相等,顯示猜中;若不相等,顯示與被猜數(shù)的大小關(guān)系,最多允許猜5次,如果用戶猜的次數(shù)大于5次,則提示游戲結(jié)束。案例四:猜數(shù)字游戲任務(wù)分析:要求計(jì)算機(jī)隨機(jī)產(chǎn)生一個(gè)0~99的一個(gè)整數(shù),設(shè)置一個(gè)計(jì)數(shù)器控制猜的次數(shù),最多5次。39解決方案:(1)本例要使用隨機(jī)函數(shù),這些函數(shù)包含在頭文件:stdlib.h和timen.h中(2)定義整形變量key用于存放隨機(jī)數(shù)(3)定義整形變量temp存放用戶猜的數(shù)字(4)定義整形變量i作為循環(huán)變量(5)調(diào)用srand()設(shè)置隨機(jī)數(shù)種子(6)調(diào)用rand()函數(shù)產(chǎn)生1~100之間的隨機(jī)數(shù)(7)使用循環(huán)讓用戶進(jìn)行猜數(shù)字游戲,用計(jì)數(shù)循環(huán)語句for語句控制循環(huán)5次。如果不到5次猜對,則利用break語句,提前結(jié)束程序;如果用戶猜的次數(shù)達(dá)到5次仍沒猜對,則循環(huán)正常結(jié)束。程序相關(guān)知識(shí)點(diǎn)42break語句break語句用在switch語句中,使程序跳出switch語句,執(zhí)行switch語句后的語句。break語句用于while、do-while、for語句中使程序終止循環(huán),而執(zhí)行循環(huán)體后面的其他語句相關(guān)知識(shí)點(diǎn)43continue語句只用于while、do-while、for語句中,跳過循環(huán)中剩下的語句,而強(qiáng)制執(zhí)行下一次循環(huán)。44C程序是由函數(shù)構(gòu)成,函數(shù)是C語言程序的基本模塊,通過對函數(shù)模塊的調(diào)用實(shí)現(xiàn)特定的功能。1)函數(shù)的定義:一般形式:函數(shù)返回值類型函數(shù)名(形式參數(shù)列表){
聲明部分
執(zhí)行部分}474、C51函數(shù)相關(guān)知識(shí)點(diǎn)—函數(shù)2)函數(shù)的分類:從用戶角度分:標(biāo)準(zhǔn)函數(shù)和用戶自定義函數(shù)。從參數(shù)形式分:無參函數(shù)和有參函數(shù)。從函數(shù)返回值來分:無返回值函數(shù)和有返回值函數(shù)。483)函數(shù)的聲明:
C語言程序,對函數(shù)實(shí)行“先定義,后調(diào)用”的原則。即:如果函數(shù)定義在調(diào)用前,則可以直接調(diào)用,無需聲明;但如果函數(shù)定義在調(diào)用之后,則先聲明才能調(diào)用。標(biāo)準(zhǔn)庫函數(shù)的聲明:程序開頭部分用#include進(jìn)行文件包含。用戶自定義函數(shù)的聲明:函數(shù)返回值類型函數(shù)名(形式參數(shù)列表);4)函數(shù)的調(diào)用:一般來說,按照函數(shù)在程序中出現(xiàn)的位置來劃分,C語言有三種常用的函數(shù)調(diào)用方式:函數(shù)表達(dá)式。函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)的返回值參與表達(dá)式的運(yùn)算。函數(shù)語句。把函數(shù)調(diào)用作為一個(gè)語句。函數(shù)參數(shù)。函數(shù)作為另
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供銷保價(jià)合同范本
- 農(nóng)村臨時(shí)建房承包合同范本
- 書畫采購合同范本
- 出版合同范本填寫
- 書贈(zèng)與合同范本
- 農(nóng)莊裝修合同范本
- 出資借款合同范本
- 分體機(jī)空調(diào)保養(yǎng)合同范本
- 企業(yè)合作運(yùn)營合同范本
- 產(chǎn)品收款合同范本
- 2022年獸醫(yī)外科手術(shù)學(xué)作業(yè)題參考答案
- T∕CAMDI 009.1-2020 無菌醫(yī)療器械初包裝潔凈度 第1部分:微粒污染試驗(yàn)方法 氣體吹脫法
- 醫(yī)院門診掛號(hào)收費(fèi)系統(tǒng)操作要點(diǎn)
- 10KV變電所電氣調(diào)試施工方案
- 國家農(nóng)產(chǎn)品質(zhì)量安全監(jiān)督抽查抽樣單
- 聘書模板可編輯
- 離心式壓縮機(jī)功率公式
- 參保人員就醫(yī)流程doc
- 2019湘美版五年級(jí)《書法練習(xí)指導(dǎo)》下冊教案
- 東南大學(xué)建筑學(xué)專業(yè)課程設(shè)置
- Q∕CR 562.2-2017 鐵路隧道防排水材料 第2部分:止水帶
評(píng)論
0/150
提交評(píng)論