版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 C51語(yǔ)言是針對(duì)8051系列及其擴(kuò)展系列單片機(jī)的語(yǔ)言,支持符合ANSI標(biāo)準(zhǔn)的c語(yǔ)言程序設(shè)計(jì),同時(shí)針對(duì)8051系列單片機(jī)的一些特點(diǎn)進(jìn)行了擴(kuò)展。2.2.1 C512.2.1 C51的標(biāo)識(shí)符和關(guān)鍵字的標(biāo)識(shí)符和關(guān)鍵字 1 1、標(biāo)識(shí)符、標(biāo)識(shí)符 程序設(shè)計(jì)者為自定義的變量、函數(shù)、類(lèi)型所起的名字只能由字母、數(shù)字、下劃線(xiàn)組成,且第一個(gè)字母必須是字母或下劃線(xiàn)不能與關(guān)鍵字同名,盡量“見(jiàn)名知義”2.2.1 C512.2.1 C51的標(biāo)識(shí)符和關(guān)鍵字的標(biāo)識(shí)符和關(guān)鍵字【例2.1 】指出下面哪些是非法的標(biāo)識(shí)符? a f-2 f6 m+n x4b 4af as_d a.ss total main month int 關(guān)鍵字:
2、mainint 非法字符:f-2m+n a.ss 開(kāi)頭非法:4af2.2.1 C512.2.1 C51的標(biāo)識(shí)符和關(guān)鍵字的標(biāo)識(shí)符和關(guān)鍵字2 2、關(guān)鍵字、關(guān)鍵字 又稱(chēng)保留字,是程序設(shè)計(jì)語(yǔ)言中規(guī)定的、有固定含義的單詞符號(hào)。(32個(gè))autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhileC51C51擴(kuò)展的關(guān)鍵字?jǐn)U展的關(guān)鍵字 _a
3、t_alienbdatabitcodecompatdataidataintertuptlargepdata_priorityreentrantsbitsfrsfr16small_task_usingxdata數(shù)據(jù)類(lèi)型C數(shù)據(jù)類(lèi)型基本類(lèi)型構(gòu)造類(lèi)型指針類(lèi)型空類(lèi)型void定義類(lèi)型typedef字符類(lèi)型 char枚舉類(lèi)型 enum整 型實(shí) 型單精度型 float雙精度型 double數(shù)組結(jié)構(gòu)體 struct共用體 union長(zhǎng)整型 long整型 int數(shù)據(jù)類(lèi)型決定:1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 其上可進(jìn)行的操作2.2.2 C512.2.2 C51的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型位 型 bit短整型
4、short2.2.3 C512.2.3 C51的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型1.1.字符型(字符型(charchar)(1)字符型常量字符常量是用單引號(hào)括起來(lái)的一個(gè)字符,如a,1,A等都是字符常量。注意,字符型常量區(qū)分大小寫(xiě),因此a和A是不同的字符常量。不可以顯示的控制字符,可以在該字符前面加一個(gè)“”組成轉(zhuǎn)義字符,也就是把“”后面的字符轉(zhuǎn)變成另外的意義。轉(zhuǎn)義字符轉(zhuǎn)義字符(2)(2)字符型變量字符型變量字符型變量的長(zhǎng)度為一個(gè)字節(jié)(即8位),而8051單片機(jī)每次可以處理8位數(shù)據(jù),因此字符型變量非常適合于8051單片機(jī)。字符型變量分為無(wú)符號(hào)和有符號(hào)兩種。如果沒(méi)有顯式地指明是無(wú)符號(hào)還是有符號(hào),則默認(rèn)為有符號(hào)字符
5、型變量。(2)(2)字符型變量字符型變量對(duì)字符型變量賦值有兩種方法:既可以將用單引號(hào)括起來(lái)的一個(gè)字符賦給字符型變量,也可以將一個(gè)在其取值范圍內(nèi)的正整數(shù)賦給字符型變量。對(duì)于有符號(hào)的變量,最具有重要意義的是其最高位((8位中最左一位)。在此位上,1代表“負(fù)”,0代表“正”,剩余的低7位代表變量的絕對(duì)值,因此有符號(hào)字符型變量所能表示的數(shù)值范圍是從-128十127。而無(wú)符號(hào)的變量的最高位不作為符號(hào)位,這與人們的習(xí)慣比較一致,不易出錯(cuò)。(3)(3)字符串常量字符串常量字符串常量是用一對(duì)雙引號(hào)括起來(lái)的字符序列不要把字符常量與字符串常量混淆。這是因?yàn)樵贑51中,系統(tǒng)在每一個(gè)字符串的結(jié)尾加一個(gè)被稱(chēng)為“字符串結(jié)
6、束標(biāo)志”字符0以判斷字符串是否結(jié)束。因此“A”表示一個(gè)字符串,它包含了A和0兩個(gè)字節(jié),因此,無(wú)法存儲(chǔ)到只有一個(gè)字節(jié)的存儲(chǔ)空間的字符型變量中。同樣地,China占用了6個(gè)字節(jié)而不是5個(gè)字節(jié)。注意:0是系統(tǒng)自動(dòng)加上的,在寫(xiě)字符串時(shí)不必加0。2.2.整型(整型(intint)(1)整型常量整型常量按進(jìn)制有以下3種表示形式:1)十進(jìn)制整數(shù):如134、5、-5、0等。2)八進(jìn)制整數(shù):以0開(kāi)頭的數(shù),例如034表示八進(jìn)制數(shù)(34)8,等于十進(jìn)數(shù)28。3)十六進(jìn)制數(shù):以0 x或0X開(kāi)頭的數(shù)是十六進(jìn)制數(shù),例如0 x3a代表十六進(jìn)制數(shù)(3a)16,等于十進(jìn)制數(shù)58;-0 x56代表十六進(jìn)制數(shù)(56)16,等于十進(jìn)
7、制-88。(2)(2)整型變量整型變量1 1)基本型:以)基本型:以intint表示,長(zhǎng)度為兩個(gè)字節(jié)。表示,長(zhǎng)度為兩個(gè)字節(jié)。2 2)短整型:以)短整型:以short intshort int表示,長(zhǎng)度為兩個(gè)字節(jié)。表示,長(zhǎng)度為兩個(gè)字節(jié)。3 3)長(zhǎng)整型:以)長(zhǎng)整型:以long intlong int表示,長(zhǎng)度為四個(gè)字節(jié)。表示,長(zhǎng)度為四個(gè)字節(jié)。 以以u(píng)nsignedunsigned表示,這種類(lèi)型與前表示,這種類(lèi)型與前3 3種類(lèi)型匹配而構(gòu)種類(lèi)型匹配而構(gòu)成無(wú)符號(hào)整型、無(wú)符號(hào)短整型和無(wú)符號(hào)長(zhǎng)整型。成無(wú)符號(hào)整型、無(wú)符號(hào)短整型和無(wú)符號(hào)長(zhǎng)整型。注意:注意:int, short int, long intint,
8、 short int, long int的缺省類(lèi)型為有的缺省類(lèi)型為有符號(hào)型。符號(hào)型。(2)(2)整型變量整型變量說(shuō)明整型變量的一般形式為:類(lèi)型說(shuō)明符 變量名,變量名,;同類(lèi)型的整型變量之間和不同類(lèi)型的整型變量之間都可以進(jìn)行算術(shù)運(yùn)算。整型變量和字符型變量之間也可以進(jìn)行算術(shù)運(yùn)算。3.3.浮點(diǎn)型(浮點(diǎn)型(floatfloat)(1)浮點(diǎn)型常量浮點(diǎn)常量只有十進(jìn)制這一種進(jìn)制,并且都被默認(rèn)為double型。對(duì)于絕對(duì)值小于1的浮點(diǎn)數(shù)可省略小數(shù)點(diǎn)前面的零,如.654就是0.654的縮略形式??茖W(xué)計(jì)數(shù)法:-3.3E9由尾數(shù)和階兩部分構(gòu)成的,-3.3E9表示:-3.3109。3.3.浮點(diǎn)型(浮點(diǎn)型(floatfl
9、oat)(2)浮點(diǎn)型變量浮點(diǎn)型變量分為單精度型(float)和雙精度型(double),長(zhǎng)度都是4個(gè)字節(jié)浮點(diǎn)型變量定義方法: float a; double b;4. 4. 指針型指針型指針型是一種特殊的數(shù)據(jù)類(lèi)型,其本身就是一個(gè)變量,但在其中存放的是另一個(gè)數(shù)據(jù)的地址。在C51中,指針的長(zhǎng)度一般是3個(gè)字節(jié)。根據(jù)所指向的變量類(lèi)型的不同指針變量也有不同的類(lèi)型,指針變量的類(lèi)型也就表示了該指針指向的地址中的數(shù)據(jù)的類(lèi)型。4. 4. 指針型指針型指針類(lèi)型的表示方法是在指針?lè)?hào)“*”前面冠以數(shù)據(jù)類(lèi)型符號(hào)例如:char *pa; /定義pa為字符型指針unsigned int *pb; /定義pb為無(wú)符號(hào)整形指
10、針float *pf; /定義pf為浮點(diǎn)型指針5. 5. 位變量(位變量(bitbit)位變量的長(zhǎng)度是1位(bit),位變量和前面介紹的字符型變量是可以直接被8051單片機(jī)處理的。位變量的值可以取0 (false)或1 (true)。對(duì)位變量進(jìn)行定義的語(yǔ)法如下: bit flag1; bit send_en=1;注意:不能定義一個(gè)位變量指針,如不能定義bit *flagl;也不能定義一個(gè)位變量數(shù)組,如不能定義bit flags3。5. 5. 位變量(位變量(bitbit)與8051單片機(jī)硬件特性操作有關(guān)的位變量必須定位在8051單片機(jī)片內(nèi)RAM的可位尋址空間中,也就是字節(jié)地址為20H-2FH的
11、16個(gè)節(jié)單元。6 6、特殊功能寄存器(、特殊功能寄存器(sfrsfr)sfr類(lèi)型的長(zhǎng)度為一個(gè)字節(jié),其定義方式如下:sfr 特殊功能寄存器名=地址常量;說(shuō)明“地址常量”就是所定義的特殊功能寄存器的地址,例如:sfr P1=0 x90; sfr SCON=0 x98;sfr P1=0 x90; sfr SCON=0 x98;注意:在關(guān)鍵字sfr后面必須是一個(gè)名字,名字可以任意選取,但應(yīng)符合一般的習(xí)慣。等號(hào)后面必須是常數(shù),不允許有帶運(yùn)算符的表達(dá)式,而且該常數(shù)必須在特殊功能寄存器的地址范圍之內(nèi)(80H0FFH)在頭文件reg51.h中對(duì)所有的特殊功能寄存器都進(jìn)行了定義。 7. 167. 16位特殊功能
12、寄存器(位特殊功能寄存器(sfr16sfr16)在新一代的8051單片機(jī)中,特殊功能寄存器在功能上經(jīng)常組合成16位來(lái)使用。為了有效地訪(fǎng)問(wèn)這種16位的特殊功能寄存器,可采用關(guān)鍵字sfrl6。sfrl6類(lèi)型的長(zhǎng)度為兩個(gè)字節(jié),其定義語(yǔ)法與8位SFR相同,但16位SFR的低端地址必須作為sfr16的定義地址。例如 sfr16 T2=0CCH; /定義TIMER2,其地址為T(mén)2L=0CCH、T2H=0CDH注意:這種定義方法適用于所有新一代的8051單片機(jī)中新增加的特殊功能寄存器,但不能用于定時(shí)器/計(jì)數(shù)器TIMER0和TIMER1的定義。8.8.可尋址位(可尋址位(sbitsbit)(1)sbit (1
13、)sbit 位變量名位變量名= =位地址位地址這種方法將位的絕對(duì)地址賦給位變量,位地址必須位于80H0FFH之間。(2)sbit (2)sbit 位變量名位變量名= =特殊功能寄存器名特殊功能寄存器名 位位置位位置當(dāng)可尋址位位于特殊功能寄存器種時(shí)可采用這種方法,“位位置”是一個(gè)07之間的常數(shù)。(3)sbit (3)sbit 位變量名位變量名= =字節(jié)地址位位置字節(jié)地址位位置這種方法以一個(gè)常數(shù)(字節(jié)地址)作為基礎(chǔ),該常數(shù)必須在80H0FH之間?!拔晃恢谩笔且粋€(gè)0-7之間的常數(shù)。sbit是一個(gè)獨(dú)立的關(guān)鍵字,不要與關(guān)鍵字bit相混淆。2.1.3 C512.1.3 C51的運(yùn)算量的運(yùn)算量1、常量程序運(yùn)
14、行期間其值不能被改變的量,即常數(shù)。數(shù)值型常量:3、3.5、-9字符常量:a、n字符串常量:”Input Information-1”2.2.3 C512.2.3 C51的運(yùn)算量的運(yùn)算量2、變量程序運(yùn)行過(guò)程中其值可以改變的量。變量名:標(biāo)識(shí)符 x變量值:變量存儲(chǔ)單元中的數(shù)據(jù) 8變量類(lèi)型:值的大小由其類(lèi)型來(lái)決定變量要“先定義、后使用”8x 2.2.3 C512.2.3 C51的運(yùn)算量的運(yùn)算量變量的定義變量的名字變量的數(shù)據(jù)類(lèi)型系統(tǒng)根據(jù)數(shù)據(jù)類(lèi)型為變量分配內(nèi)存空間變量的取值范圍變量可以進(jìn)行的操作 存儲(chǔ)種類(lèi)存儲(chǔ)種類(lèi) 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 存儲(chǔ)器類(lèi)型存儲(chǔ)器類(lèi)型 變量名表;變量名表;完整的變量定義格式:完整的變量定
15、義格式:(1 1)存儲(chǔ)種類(lèi))存儲(chǔ)種類(lèi) 1)自動(dòng)變量函數(shù)體內(nèi)部或者復(fù)合語(yǔ)句中定義的變量,如果省略存儲(chǔ)種類(lèi)說(shuō)明或者在變量名前面加上存儲(chǔ)種類(lèi)說(shuō)明符“auto”,即可將該變量定義為自動(dòng)變量。通常采用缺省形式,即省略存儲(chǔ)種類(lèi)說(shuō)明。 自動(dòng)變量的作用域在定義其的函數(shù)體或復(fù)合語(yǔ)句內(nèi)部。 自動(dòng)變量始終是相對(duì)于函數(shù)或復(fù)合語(yǔ)句的局部變量。(1 1)存儲(chǔ)種類(lèi))存儲(chǔ)種類(lèi)2)外部變量在所有函數(shù)外部定義的變量或者使用存儲(chǔ)種類(lèi)說(shuō)明符 “extern”定義的變量稱(chēng)為外部變量,一個(gè)外部變量被定義后,就被分配了固定的內(nèi)存空間,并且可以被一個(gè)程序中的所有函數(shù)使用外部變量屬于全局變量,其作用域是整個(gè)程序,在程序的任何地方均可以對(duì)這種變
16、量進(jìn)行訪(fǎng)問(wèn)如果外部變量與自動(dòng)變量有同名變量,則只有自動(dòng)變量起作用。(1 1)存儲(chǔ)種類(lèi))存儲(chǔ)種類(lèi)3)靜態(tài)變量靜態(tài)變量的定義方法是在類(lèi)型定義語(yǔ)句之前加關(guān)鍵字static。 內(nèi)部靜態(tài)變量是在函數(shù)內(nèi)部定義的,與自動(dòng)變量相比,其作用域同樣限于定義內(nèi)部靜態(tài)變量的函數(shù)內(nèi)部,但內(nèi)部靜態(tài)變量始終都是存在的,其初值只是在進(jìn)入時(shí)賦值一次,退出函數(shù)之后變量的值仍然保存但不能訪(fǎng)問(wèn)。 外部靜態(tài)變量是在函數(shù)外部被定義的,與外部變量相比,其作用域同樣是從定義點(diǎn)開(kāi)始,一直到程序結(jié)束,但外部靜態(tài)變量只能在被定義的模塊文件中訪(fǎng)問(wèn),其數(shù)據(jù)值可以為該文件內(nèi)所有的函數(shù)所共享,退出該文件后,雖然變量的值仍然保存著,但不能被其他模塊文件訪(fǎng)問(wèn)
17、。 內(nèi)部靜態(tài)變量的用法示例內(nèi)部靜態(tài)變量的用法示例#include#includevoid main() char i; SCON=0 x52; TMOD=0 x20; TH1=0XE8; TR1=1; for(i=1;i”右移運(yùn)算符用來(lái)將一個(gè)數(shù)的各二進(jìn)制位全部右移若干位,移到右端的低位被舍棄。對(duì)無(wú)符號(hào)數(shù)或者有符號(hào)數(shù)中的正數(shù),左邊高位移入0;對(duì)有符號(hào)數(shù)中的負(fù)數(shù),左邊高端移入1。 右移1位相當(dāng)于除以2,右移n位相當(dāng)于除以2n,因此a2相當(dāng)于a/4。(6)(6)左移運(yùn)算符左移運(yùn)算符“”右移運(yùn)算符用來(lái)將一個(gè)數(shù)的各二進(jìn)制位全部左移若干位,移到左端的高位被舍棄,右邊的低位補(bǔ)0。左移1位相當(dāng)于乘以2,左移n
18、位相當(dāng)于乘以除以2n。 7.7.復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符凡是二目運(yùn)算符都可以和賦值運(yùn)算符結(jié)合組成復(fù)合賦值運(yùn)算符。 C語(yǔ)言規(guī)定可以使用以下10種復(fù)合賦值表達(dá)式:+=、-=、*=、/=、%=、=、&=、|=、=復(fù)合賦值表達(dá)式的一般形式為:變量 復(fù)合賦值運(yùn)算符 表達(dá)式8.8.逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式C51提供了一種特殊運(yùn)算符逗號(hào)運(yùn)算符,用逗號(hào)運(yùn)算符可以把兩個(gè)或多個(gè)表達(dá)式連接起來(lái),形成逗號(hào)表達(dá)式。逗號(hào)表達(dá)式的一般形式為:表達(dá)式表達(dá)式1,表達(dá)式式,表達(dá)式式2,、表達(dá)式、表達(dá)式n逗號(hào)表達(dá)式的求解過(guò)程是從左到右依次計(jì)算出每個(gè)表達(dá)式的值,整個(gè)逗號(hào)表達(dá)式的值等于最右邊的表達(dá)式(表達(dá)式n)的值。并非程序中任何地方出現(xiàn)的逗號(hào)都是逗號(hào)運(yùn)算符,例
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版人力資源服務(wù)戰(zhàn)略框架協(xié)議
- 2024年藝術(shù)品買(mǎi)賣(mài)合同:真品性與價(jià)值評(píng)估
- 2024年預(yù)制件加工與裝配式建筑構(gòu)件物流配送合同3篇
- 《子女撫養(yǎng)權(quán)與財(cái)產(chǎn)分割合同》版B版
- 2 我們的班規(guī)我們訂(說(shuō)課稿)2024-2025學(xué)年統(tǒng)編版道德與法治四年級(jí)上冊(cè)
- 2024渣土外運(yùn)過(guò)程中環(huán)境保護(hù)合同
- 2024年網(wǎng)絡(luò)安全與風(fēng)險(xiǎn)管理協(xié)議
- 專(zhuān)用燒烤制品買(mǎi)賣(mài)協(xié)議(2024版)版A版
- 培訓(xùn)咨詢(xún)服務(wù)協(xié)議書(shū)(2篇)
- 2024年航天器研發(fā)與發(fā)射合同
- 落實(shí)《中小學(xué)德育工作指南》制定的實(shí)施方案(pdf版)
- 光伏項(xiàng)目施工總進(jìn)度計(jì)劃表(含三級(jí))
- 氣候變化與林業(yè)碳匯智慧樹(shù)知到期末考試答案2024年
- 挪用公款還款協(xié)議書(shū)范本
- 建設(shè)工程施工合同 GF—2017—0201
- 法道(FADAL)機(jī)床設(shè)備維修知識(shí)講座
- 職校生個(gè)人簡(jiǎn)歷自薦信范文模板
- 雙電源STS靜態(tài)換轉(zhuǎn)開(kāi)關(guān)輸入配電系統(tǒng)解決方案
- 中建CI報(bào)價(jià)單
- 汽車(chē)吊吊裝計(jì)算
- 河南省集中供熱定價(jià)成本監(jiān)審辦法
評(píng)論
0/150
提交評(píng)論