已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)原理與應(yīng)用,2019/7/21,第3部分 C語(yǔ)言篇(擴(kuò)展) 1,學(xué)習(xí)內(nèi)容和目標(biāo) 開(kāi)發(fā)MCU系統(tǒng)的基本平臺(tái) 必須注意的事項(xiàng) 軟件操作指導(dǎo) 注意: 思維一定要開(kāi)闊一些,多問(wèn)為什么。 允許不用舉手,并隨時(shí)打斷,向我提任何和課程相關(guān)的問(wèn)題。,2019/7/21,2,本節(jié)學(xué)習(xí)目標(biāo),1.1 引言 Keil C51 軟件是眾多單片機(jī)應(yīng)用開(kāi)發(fā)的優(yōu)秀軟件之一 集編輯,編譯,仿真于一體 支持匯編、PLM 語(yǔ)言和C 語(yǔ)言的程序設(shè)計(jì) 界面友好,易學(xué)易用。,2019/7/21,3,1 Keil軟件的基本使用,多看HELP,學(xué)習(xí)使用菜單下的各個(gè)內(nèi)容:,2019/7/21,4,1.2 Keil C51的編輯界面,流程: 建立工程; 選擇單片機(jī)型號(hào)(考慮非單片機(jī)怎么辦) 建立程序文件; 根據(jù)目的編寫(xiě)程序; 調(diào)試程序; 編譯程序:理解編譯器 燒寫(xiě)程序到目標(biāo)機(jī):燒寫(xiě)方法必須根據(jù)單片機(jī)確定; 請(qǐng)到百度或google上搜索keil C的使用方法 自己動(dòng)手是熟悉編程/編譯平臺(tái)的不二法門(mén)。,2019/7/21,5,1.3 Keil編程的主要流程,2.1 引言 請(qǐng)帶著以下問(wèn)題理解將來(lái)講述的內(nèi)容() : C語(yǔ)言的程序結(jié)構(gòu)是怎樣的? C語(yǔ)言的語(yǔ)法是怎樣的,有何特點(diǎn)? C程序中從表達(dá)內(nèi)容上可以怎樣分? 程序即邏輯,那么C如何表現(xiàn)邏輯的? 需要注意C程序的編寫(xiě)方式么? 常說(shuō)的“模塊”是怎樣的?有什么具體要求么? 對(duì)于MCU而言,編程是怎樣的?,2019/7/21,6,2 C語(yǔ)言總略,C語(yǔ)言的發(fā)展過(guò)程如下: 1960年:ALGOL 1963年:CPL 1967年:BCPL 1970年:B 1972年:C C語(yǔ)言是目前世界上流行最廣的通用程序設(shè)計(jì)語(yǔ)言。 介乎于高級(jí)語(yǔ)言和匯編語(yǔ)言之間,兼有兩者的優(yōu)點(diǎn)。 引用結(jié)構(gòu)化程序結(jié)構(gòu),便于軟件工程化。 語(yǔ)言簡(jiǎn)潔,且表達(dá)能力強(qiáng),使用靈活,易于學(xué)習(xí)和應(yīng)用。 可移植性好 。,2019/7/21,7,2.2 C語(yǔ)言的發(fā)展及其特點(diǎn),考慮: 這種結(jié)構(gòu)的特點(diǎn)是什么? 各個(gè)區(qū)域中如何實(shí)現(xiàn)的? 具體用法是怎樣的? 如何更好的實(shí)現(xiàn)調(diào)用?,2019/7/21,8,2.3 C程序的結(jié)構(gòu),2019/7/21,9,2.4 C語(yǔ)言的幾個(gè)知識(shí)點(diǎn)(),3.1 標(biāo)識(shí)符 標(biāo)識(shí)符:在高級(jí)語(yǔ)言程序中由用戶(hù)(即程序員)或編譯程序(有時(shí)稱(chēng)系統(tǒng))定義的常量、變量、自定義的數(shù)據(jù)類(lèi)型、函數(shù)、過(guò)程和程序等的名字。 標(biāo)識(shí)符的組成規(guī)則:由字母(AZ,az)、下劃線_和數(shù)字(09)組成,其第一個(gè)字母或下劃線_。字母要區(qū)分大小寫(xiě)。 標(biāo)識(shí)符的有效長(zhǎng)度:能夠被編譯程序識(shí)別的標(biāo)識(shí)符的字符的數(shù)目稱(chēng)為標(biāo)識(shí)符的有效長(zhǎng)度。標(biāo)準(zhǔn)C規(guī)定標(biāo)識(shí)符的有效長(zhǎng)度為31。,2019/7/21,10,3基本語(yǔ)法單位(復(fù)習(xí))(),關(guān)鍵字由固定的小寫(xiě)字母組成,是系統(tǒng)預(yù)定的名字,用于表示C語(yǔ)言的語(yǔ)句,數(shù)據(jù)類(lèi)型、存儲(chǔ)類(lèi)型或運(yùn)算符。關(guān)鍵字又稱(chēng)為保留字 。 標(biāo)準(zhǔn)C定義的32個(gè)關(guān)鍵字如下:,2019/7/21,11,3.2關(guān)鍵字,分隔符:包括空格符、制表符、換行符、換頁(yè)符及注釋符。程序中兩個(gè)相鄰的標(biāo)識(shí)符、關(guān)鍵字和常量之間必須用分隔符分開(kāi)(通常用空格符)。 常量:程序中其數(shù)值不發(fā)生變化的量。C語(yǔ)言中常用的的常量有三類(lèi):數(shù),字符和字符串 。此外,C語(yǔ)言中還經(jīng)常使用兩種表現(xiàn)形式不同的常量:換碼序列和符號(hào)常量。常量的類(lèi)型是由常量的文字自身隱含說(shuō)明的 。 請(qǐng)注意:一個(gè)優(yōu)秀的編程人員會(huì)靈活和有效的使用常量。,2019/7/21,12,3.3 分隔符與常量,4.1 如何定義(說(shuō)明)各種類(lèi)型的變量 在程序執(zhí)行過(guò)程中,值可以改變的量稱(chēng)為變量。變量定義的格式(定義一個(gè)變量的語(yǔ)句這樣寫(xiě)): 存儲(chǔ)類(lèi)型 數(shù)據(jù)類(lèi)型 變量名 = 初值; 如上例中的 int i ; 即定義了一個(gè)int 型(整型)變量i;也可以一條語(yǔ)句定義多個(gè)變量,格式為: 存儲(chǔ)類(lèi)型 數(shù)據(jù)類(lèi)型 變量名表; 如: int i, j, k; i,j,k是變量名, int 是數(shù)據(jù)類(lèi)型。,2019/7/21,13,4 數(shù)據(jù)類(lèi)型和變量定義(復(fù)習(xí))(),請(qǐng)務(wù)必掌握各個(gè)數(shù)據(jù)類(lèi)型的定義方法,并明確在何種條件使用。 變量定義與存儲(chǔ)類(lèi)型相關(guān)。,2019/7/21,14,4.2 數(shù)據(jù)類(lèi)型,原則1:明確公共變量的含義、作用、取值范圍及公共變量間的關(guān)系。(說(shuō)明:在對(duì)變量聲明的同時(shí),應(yīng)對(duì)其含義、作用及取值范圍進(jìn)行注釋說(shuō)明,同時(shí)若有必要還應(yīng)說(shuō)明與其它變量的關(guān)系。) 原則2:使用嚴(yán)格形式定義的、可移植的數(shù)據(jù)類(lèi)型,盡量不要使用與具體硬件或軟件環(huán)境關(guān)系密切的變量。 原則3:在變量中務(wù)必說(shuō)明該變量的數(shù)據(jù)類(lèi)型:例如一個(gè)整型變量,可以在當(dāng)前添加字母i描述。下表是我常用的前綴。 原則4:望文生義 總之:書(shū)寫(xiě)規(guī)范是為了便于交流。,2019/7/21,15,4.3 定義數(shù)據(jù)類(lèi)型的規(guī)范,幾個(gè)新的定義:bit、sbit、sfr和sfr16是為訪問(wèn)MCS-51硬件中的內(nèi)部RAM中的位、SRF中的位以及8位SRF和16位SFR(如DPTR)所特有的類(lèi)型,它們不是ANSI C的一部分,不能用指針對(duì)它們進(jìn)行訪問(wèn),也不能定義包含這些類(lèi)型元素的數(shù)組、結(jié)構(gòu)體、聯(lián)合體等。 與存儲(chǔ)器結(jié)構(gòu)相關(guān),可以指定存儲(chǔ)區(qū)域:4個(gè)存儲(chǔ)區(qū) 例:char data varl; unsigned long xdata array100; float idata x,y,z;,2019/7/21,16,4.4 MSC-51的變量定義,特殊功能寄存器的聲明: sfr 特殊功能寄存器名稱(chēng)=地址常數(shù) sfr P0=0x80; sfr P1=0x90; 定義特殊功能寄存器中的地址必須在0x800xff范圍內(nèi)。 定義特殊功能寄存器,必須放在函數(shù)外面作為全局變量。 用sfr或sfr16每次只能定義一個(gè)特殊功能寄存器。 像sbit一樣,用sfr或sfr16定義的是絕對(duì)定位的變量(因?yàn)槊质桥c確定地址對(duì)應(yīng)的),具有特定的意義,在應(yīng)用時(shí)不能像一般變量那樣隨便使用。 16bit特殊功能寄存器的聲明: sfr16 特殊功能寄存器名稱(chēng)=地址常數(shù) sfr16 T2=0xcc;,2019/7/21,17,4.5 MSC-51中寄存器及接口定義,特殊功能寄存器中特定位的聲明: sbit 位變量名特殊功能寄存器名位的位置 sbit 位變量名字節(jié)地址位的位置 sbit 位變量名位地址 用sbit定義的位變量,必須能夠按位操作,而不能夠?qū)o(wú)位操作功能的位定義位變量。 用sbit定義位變量,必須放在函數(shù)外面作為全局位變量,而不能在函數(shù)內(nèi)部定義。 用sbit每次只能定義一個(gè)位變量。 對(duì)其它模塊定義的位變量(bit型或 sbit型)的引用聲明,都使用bit。 用sbit定義的是一種絕對(duì)定位的位變量(因?yàn)槊质桥c確定位地址對(duì)應(yīng)的),具有特定的意義,在應(yīng)用時(shí)不能像bit型位變量那樣隨便使用。,2019/7/21,18,4.5 MSC-51中寄存器及接口定義(續(xù)1),對(duì)存儲(chǔ)器的訪問(wèn): CBYTE (訪問(wèn)code區(qū)字符型) CWORD (訪問(wèn)code區(qū)int型) DBYTE (訪問(wèn)data區(qū)字符型) DWORD (訪問(wèn)data區(qū)int型) PBYTE (訪問(wèn)pdata或I/O區(qū)字符型) PWORD (訪問(wèn)pdata區(qū)int型) XBYTE (訪問(wèn)xdata或I/O區(qū)字符型) XWORD (訪問(wèn)xdata區(qū)int型) 這些宏定義原型放在absacc.h文件中,使用時(shí)需要用預(yù)處理命令把該頭文件包含到文件中,形式為:#include 。 #include DBYTE0x30=48; /給片內(nèi)RAM送數(shù)據(jù) XBYTE0x0002=0x36; /給片外RAM送數(shù)據(jù) dis_buf0=CBYTETABLE+5; /從CODE區(qū)讀數(shù)據(jù),2019/7/21,19,4.5 MSC-51中寄存器及接口定義(續(xù)2),對(duì)外部I/O接口的訪問(wèn): MCS-51單片機(jī)I/O接口與外部數(shù)據(jù)存儲(chǔ)區(qū)是統(tǒng)一編址的,因此對(duì)I/O接口地址可用XBYTE或PBYTE。 例如:XBYTE0x7fff0x30;將30H輸出到地址為7FFFH的接口。 幾點(diǎn)說(shuō)明: 使用typedef方便移植:typedef int integer; sbit用于定義位變量的名字和地址,地址是確定的且不用編譯器分配。定義范圍為整個(gè)位尋址空間。 bit用于定義位變量的名字,編譯器會(huì)對(duì)其分配地址。位變量分配在內(nèi)部RAM的位尋址區(qū),位地址范圍為00H7FH。,2019/7/21,20,4.5 MSC-51中寄存器及接口定義(續(xù)3),5.1 C運(yùn)算符 算術(shù)運(yùn)算符有5個(gè): 算術(shù)運(yùn)算時(shí)的自動(dòng)類(lèi)型轉(zhuǎn)換可描述為:雙目運(yùn)算符的兩個(gè)運(yùn)算量中,值域較窄的類(lèi)型向值域較寬的類(lèi)型轉(zhuǎn)換?!爸涤颉本褪穷?lèi)型所能表示的值的最大范圍。,2019/7/21,21,5 C運(yùn)算符及其使用,表達(dá)式中的有符號(hào)和無(wú)符號(hào)字符以及短整型一律被轉(zhuǎn)換為整型,如果int類(lèi)型能表示原來(lái)類(lèi)型的值,則轉(zhuǎn)換成int類(lèi)型,否則轉(zhuǎn)換成unsigned類(lèi)型。 當(dāng)一個(gè)運(yùn)算量為long類(lèi)型,另一個(gè)為unsigned類(lèi)型時(shí),如果long能表示unsigned的全部值,則將unsigned轉(zhuǎn)換成long,否則將兩個(gè)運(yùn)算量都轉(zhuǎn)換為unsigned long。 賦值轉(zhuǎn)換將右值表達(dá)式結(jié)果的類(lèi)型轉(zhuǎn)成左值表達(dá)式的數(shù)據(jù)類(lèi)型。賦值轉(zhuǎn)換具有強(qiáng)制性,它不受算術(shù)轉(zhuǎn)換規(guī)則的約束,轉(zhuǎn)換結(jié)果的類(lèi)型完全由左子表達(dá)式的類(lèi)型決定。 強(qiáng)制類(lèi)型轉(zhuǎn)換是靠強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符來(lái)實(shí)現(xiàn)數(shù)據(jù)類(lèi)型轉(zhuǎn)換的,因此強(qiáng)制類(lèi)型轉(zhuǎn)換也叫做顯式轉(zhuǎn)換 。它的作用是將表達(dá)式轉(zhuǎn)換成“類(lèi)型名”所指定的類(lèi)型。表達(dá)式形式為: (類(lèi)型名) 表達(dá)式,2019/7/21,22,5.2 C運(yùn)算符注意事項(xiàng),C語(yǔ)言中的關(guān)系運(yùn)算符包括: =(大于或等于) (大于) != (不等于) 關(guān)系運(yùn)算符用來(lái)比較兩個(gè)運(yùn)算量之間的關(guān)系。用關(guān)系運(yùn)算符將前、后兩個(gè)運(yùn)算量連接起來(lái)的式子稱(chēng)為“關(guān)系表達(dá)式”,這兩個(gè)運(yùn)算量可以是任意表達(dá)式。當(dāng)關(guān)系表達(dá)式成立時(shí),表達(dá)式的結(jié)果為整數(shù)1,否則為整數(shù)0 。 C語(yǔ)言中的邏輯運(yùn)算符包括: & (邏輯與) | (邏輯或) ! (邏輯非),2019/7/21,23,5.3 關(guān)系運(yùn)算符和邏輯運(yùn)算符,重要內(nèi)容:,2019/7/21,24,5.4 位運(yùn)算符,自增自減運(yùn)算符: 賦值運(yùn)算符與賦值表達(dá)式: 復(fù)合賦值運(yùn)算:(不推薦) 例如: i += j 等價(jià)于 i = i + j x *= y - 5 等價(jià)于 x = x * (y-5) m = 2 等價(jià)于 m = m 2 條件運(yùn)算符: (不推薦) 它的格式是: 表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3 它的操作過(guò)程是:判斷表達(dá)式1的值,如果為非0值,則求解表達(dá)式2的值,并將其作為該條件表達(dá)式的值;如果表達(dá)式1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年四川巴中南江縣事業(yè)單位考試招聘72人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上海煙草集團(tuán)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年福建泉州豐澤城市建設(shè)集團(tuán)限公司南埔山片區(qū)項(xiàng)目招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年江蘇省無(wú)錫高新區(qū)事業(yè)單位招聘55人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年廣東東莞市事業(yè)單位招聘博士9人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川南充西充縣部分縣級(jí)事業(yè)單位考調(diào)21人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年內(nèi)蒙古呼和浩特市事業(yè)單位招聘938人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年砂石子采購(gòu)合同中的交貨時(shí)間與地點(diǎn)規(guī)定
- 2025年度孩子上學(xué)接送與學(xué)習(xí)輔導(dǎo)一體化勞務(wù)合同2篇
- 2025年度城市基礎(chǔ)設(shè)施建設(shè)合同正副本封面設(shè)計(jì)合同書(shū)
- 初中語(yǔ)文九年級(jí)下冊(cè)《短詩(shī)五首-月夜》+教學(xué)課件
- 不銹鋼樓梯扶手安裝合同
- 開(kāi)荒保潔物業(yè)管理開(kāi)荒保潔服務(wù)實(shí)施方案
- 山東省煙臺(tái)市萊州市2023-2024學(xué)年五年級(jí)上學(xué)期期末考試數(shù)學(xué)試題
- 2016-2023年南京信息職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年考點(diǎn)試題甄選合集含答案解析
- 山東省棗莊市滕州市2023-2024學(xué)年高二上學(xué)期1月期末考試物理試題
- 售前解決方案部門(mén)管理規(guī)章制度
- 《城市道路工程設(shè)計(jì)規(guī)范》宣貫
- 電力工程管理培訓(xùn)課件
- 30題調(diào)度員崗位常見(jiàn)面試問(wèn)題含HR問(wèn)題考察點(diǎn)及參考回答
- 加裝電梯可行性鑒定報(bào)告
評(píng)論
0/150
提交評(píng)論