已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)原理與應(yīng)用,2019/7/21,第3部分 C語言篇(擴(kuò)展) 1,學(xué)習(xí)內(nèi)容和目標(biāo) 開發(fā)MCU系統(tǒng)的基本平臺(tái) 必須注意的事項(xiàng) 軟件操作指導(dǎo) 注意: 思維一定要開闊一些,多問為什么。 允許不用舉手,并隨時(shí)打斷,向我提任何和課程相關(guān)的問題。,2019/7/21,2,本節(jié)學(xué)習(xí)目標(biāo),1.1 引言 Keil C51 軟件是眾多單片機(jī)應(yīng)用開發(fā)的優(yōu)秀軟件之一 集編輯,編譯,仿真于一體 支持匯編、PLM 語言和C 語言的程序設(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ù)目的編寫程序; 調(diào)試程序; 編譯程序:理解編譯器 燒寫程序到目標(biāo)機(jī):燒寫方法必須根據(jù)單片機(jī)確定; 請(qǐng)到百度或google上搜索keil C的使用方法 自己動(dòng)手是熟悉編程/編譯平臺(tái)的不二法門。,2019/7/21,5,1.3 Keil編程的主要流程,2.1 引言 請(qǐng)帶著以下問題理解將來講述的內(nèi)容() : C語言的程序結(jié)構(gòu)是怎樣的? C語言的語法是怎樣的,有何特點(diǎn)? C程序中從表達(dá)內(nèi)容上可以怎樣分? 程序即邏輯,那么C如何表現(xiàn)邏輯的? 需要注意C程序的編寫方式么? 常說的“模塊”是怎樣的?有什么具體要求么? 對(duì)于MCU而言,編程是怎樣的?,2019/7/21,6,2 C語言總略,C語言的發(fā)展過程如下: 1960年:ALGOL 1963年:CPL 1967年:BCPL 1970年:B 1972年:C C語言是目前世界上流行最廣的通用程序設(shè)計(jì)語言。 介乎于高級(jí)語言和匯編語言之間,兼有兩者的優(yōu)點(diǎn)。 引用結(jié)構(gòu)化程序結(jié)構(gòu),便于軟件工程化。 語言簡潔,且表達(dá)能力強(qiáng),使用靈活,易于學(xué)習(xí)和應(yīng)用。 可移植性好 。,2019/7/21,7,2.2 C語言的發(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語言的幾個(gè)知識(shí)點(diǎn)(),3.1 標(biāo)識(shí)符 標(biāo)識(shí)符:在高級(jí)語言程序中由用戶(即程序員)或編譯程序(有時(shí)稱系統(tǒng))定義的常量、變量、自定義的數(shù)據(jù)類型、函數(shù)、過程和程序等的名字。 標(biāo)識(shí)符的組成規(guī)則:由字母(AZ,az)、下劃線_和數(shù)字(09)組成,其第一個(gè)字母或下劃線_。字母要區(qū)分大小寫。 標(biāo)識(shí)符的有效長度:能夠被編譯程序識(shí)別的標(biāo)識(shí)符的字符的數(shù)目稱為標(biāo)識(shí)符的有效長度。標(biāo)準(zhǔn)C規(guī)定標(biāo)識(shí)符的有效長度為31。,2019/7/21,10,3基本語法單位(復(fù)習(xí))(),關(guān)鍵字由固定的小寫字母組成,是系統(tǒng)預(yù)定的名字,用于表示C語言的語句,數(shù)據(jù)類型、存儲(chǔ)類型或運(yùn)算符。關(guān)鍵字又稱為保留字 。 標(biāo)準(zhǔn)C定義的32個(gè)關(guān)鍵字如下:,2019/7/21,11,3.2關(guān)鍵字,分隔符:包括空格符、制表符、換行符、換頁符及注釋符。程序中兩個(gè)相鄰的標(biāo)識(shí)符、關(guān)鍵字和常量之間必須用分隔符分開(通常用空格符)。 常量:程序中其數(shù)值不發(fā)生變化的量。C語言中常用的的常量有三類:數(shù),字符和字符串 。此外,C語言中還經(jīng)常使用兩種表現(xiàn)形式不同的常量:換碼序列和符號(hào)常量。常量的類型是由常量的文字自身隱含說明的 。 請(qǐng)注意:一個(gè)優(yōu)秀的編程人員會(huì)靈活和有效的使用常量。,2019/7/21,12,3.3 分隔符與常量,4.1 如何定義(說明)各種類型的變量 在程序執(zhí)行過程中,值可以改變的量稱為變量。變量定義的格式(定義一個(gè)變量的語句這樣寫): 存儲(chǔ)類型 數(shù)據(jù)類型 變量名 = 初值; 如上例中的 int i ; 即定義了一個(gè)int 型(整型)變量i;也可以一條語句定義多個(gè)變量,格式為: 存儲(chǔ)類型 數(shù)據(jù)類型 變量名表; 如: int i, j, k; i,j,k是變量名, int 是數(shù)據(jù)類型。,2019/7/21,13,4 數(shù)據(jù)類型和變量定義(復(fù)習(xí))(),請(qǐng)務(wù)必掌握各個(gè)數(shù)據(jù)類型的定義方法,并明確在何種條件使用。 變量定義與存儲(chǔ)類型相關(guān)。,2019/7/21,14,4.2 數(shù)據(jù)類型,原則1:明確公共變量的含義、作用、取值范圍及公共變量間的關(guān)系。(說明:在對(duì)變量聲明的同時(shí),應(yīng)對(duì)其含義、作用及取值范圍進(jìn)行注釋說明,同時(shí)若有必要還應(yīng)說明與其它變量的關(guān)系。) 原則2:使用嚴(yán)格形式定義的、可移植的數(shù)據(jù)類型,盡量不要使用與具體硬件或軟件環(huán)境關(guān)系密切的變量。 原則3:在變量中務(wù)必說明該變量的數(shù)據(jù)類型:例如一個(gè)整型變量,可以在當(dāng)前添加字母i描述。下表是我常用的前綴。 原則4:望文生義 總之:書寫規(guī)范是為了便于交流。,2019/7/21,15,4.3 定義數(shù)據(jù)類型的規(guī)范,幾個(gè)新的定義:bit、sbit、sfr和sfr16是為訪問MCS-51硬件中的內(nèi)部RAM中的位、SRF中的位以及8位SRF和16位SFR(如DPTR)所特有的類型,它們不是ANSI C的一部分,不能用指針對(duì)它們進(jìn)行訪問,也不能定義包含這些類型元素的數(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 特殊功能寄存器名稱=地址常數(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 特殊功能寄存器名稱=地址常數(shù) sfr16 T2=0xcc;,2019/7/21,17,4.5 MSC-51中寄存器及接口定義,特殊功能寄存器中特定位的聲明: sbit 位變量名特殊功能寄存器名位的位置 sbit 位變量名字節(jié)地址位的位置 sbit 位變量名位地址 用sbit定義的位變量,必須能夠按位操作,而不能夠?qū)o位操作功能的位定義位變量。 用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ǔ)器的訪問: CBYTE (訪問code區(qū)字符型) CWORD (訪問code區(qū)int型) DBYTE (訪問data區(qū)字符型) DWORD (訪問data區(qū)int型) PBYTE (訪問pdata或I/O區(qū)字符型) PWORD (訪問pdata區(qū)int型) XBYTE (訪問xdata或I/O區(qū)字符型) XWORD (訪問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接口的訪問: MCS-51單片機(jī)I/O接口與外部數(shù)據(jù)存儲(chǔ)區(qū)是統(tǒng)一編址的,因此對(duì)I/O接口地址可用XBYTE或PBYTE。 例如:XBYTE0x7fff0x30;將30H輸出到地址為7FFFH的接口。 幾點(diǎn)說明: 使用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)類型轉(zhuǎn)換可描述為:雙目運(yùn)算符的兩個(gè)運(yùn)算量中,值域較窄的類型向值域較寬的類型轉(zhuǎn)換?!爸涤颉本褪穷愋退鼙硎镜闹档淖畲蠓秶?2019/7/21,21,5 C運(yùn)算符及其使用,表達(dá)式中的有符號(hào)和無符號(hào)字符以及短整型一律被轉(zhuǎn)換為整型,如果int類型能表示原來類型的值,則轉(zhuǎn)換成int類型,否則轉(zhuǎn)換成unsigned類型。 當(dāng)一個(gè)運(yùn)算量為long類型,另一個(gè)為unsigned類型時(shí),如果long能表示unsigned的全部值,則將unsigned轉(zhuǎn)換成long,否則將兩個(gè)運(yùn)算量都轉(zhuǎn)換為unsigned long。 賦值轉(zhuǎn)換將右值表達(dá)式結(jié)果的類型轉(zhuǎn)成左值表達(dá)式的數(shù)據(jù)類型。賦值轉(zhuǎn)換具有強(qiáng)制性,它不受算術(shù)轉(zhuǎn)換規(guī)則的約束,轉(zhuǎn)換結(jié)果的類型完全由左子表達(dá)式的類型決定。 強(qiáng)制類型轉(zhuǎn)換是靠強(qiáng)制類型轉(zhuǎn)換運(yùn)算符來實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換的,因此強(qiáng)制類型轉(zhuǎn)換也叫做顯式轉(zhuǎn)換 。它的作用是將表達(dá)式轉(zhuǎn)換成“類型名”所指定的類型。表達(dá)式形式為: (類型名) 表達(dá)式,2019/7/21,22,5.2 C運(yùn)算符注意事項(xiàng),C語言中的關(guān)系運(yùn)算符包括: =(大于或等于) (大于) != (不等于) 關(guān)系運(yùn)算符用來比較兩個(gè)運(yùn)算量之間的關(guān)系。用關(guān)系運(yùn)算符將前、后兩個(gè)運(yùn)算量連接起來的式子稱為“關(guān)系表達(dá)式”,這兩個(gè)運(yùn)算量可以是任意表達(dá)式。當(dāng)關(guān)系表達(dá)式成立時(shí),表達(dá)式的結(jié)果為整數(shù)1,否則為整數(shù)0 。 C語言中的邏輯運(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 它的操作過程是:判斷表達(dá)式1的值,如果為非0值,則求解表達(dá)式2的值,并將其作為該條件表達(dá)式的值;如果表達(dá)式1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版高層建筑玻璃幕墻清洗服務(wù)合同3篇
- 2025版房地產(chǎn)代理售后服務(wù)規(guī)范操作合同2篇
- 建材欄桿銷售合同范文
- 包頭輕工職業(yè)技術(shù)學(xué)院《環(huán)境工程基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年高效節(jié)能配電室安裝與維護(hù)服務(wù)合同3篇
- 2024年跨國基礎(chǔ)設(shè)施建設(shè)合同3篇
- 2025年度保安人員職業(yè)發(fā)展規(guī)劃合同3篇
- 2024年限定區(qū)域消防設(shè)施養(yǎng)護(hù)服務(wù)協(xié)議版B版
- 2025版凈水器租賃與綠色生活倡導(dǎo)服務(wù)合同2篇
- 2025年度企業(yè)人力資源招聘渠道拓展外包合同3篇
- 石油形成過程科普知識(shí)講座
- 輔警心理健康知識(shí)講座
- 《棗樹常見病蟲害》課件
- 刑法試題庫大全
- 燃?xì)獍惭b人員管理制度
- 省份簡稱課件
- 公民科學(xué)素質(zhì)調(diào)查問卷
- 小學(xué)健康教育試題-及答案
- 鋼構(gòu)件應(yīng)力超聲檢測(cè)技術(shù)規(guī)程
- -《多軸數(shù)控加工及工藝》(第二版)教案
- 體 育 課 教 學(xué) 評(píng) 價(jià) 量 表
評(píng)論
0/150
提交評(píng)論