第三章 C51數(shù)據(jù)與運(yùn)算_第1頁
第三章 C51數(shù)據(jù)與運(yùn)算_第2頁
第三章 C51數(shù)據(jù)與運(yùn)算_第3頁
第三章 C51數(shù)據(jù)與運(yùn)算_第4頁
第三章 C51數(shù)據(jù)與運(yùn)算_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第三章第三章 C51數(shù)據(jù)與運(yùn)算數(shù)據(jù)與運(yùn)算3.1 數(shù)據(jù)與數(shù)據(jù)類型數(shù)據(jù)與數(shù)據(jù)類型3.2 常量與變量常量與變量3.3 C51數(shù)據(jù)的存儲類型與數(shù)據(jù)的存儲類型與8051存儲結(jié)構(gòu)存儲結(jié)構(gòu)3.4 8051特殊功能寄存器及其特殊功能寄存器及其C51定義定義3.5 8051并行接口及其并行接口及其C51定義定義3.6 位變量及其位變量及其C51定義定義3.7 C51運(yùn)算符、表達(dá)式及其規(guī)則運(yùn)算符、表達(dá)式及其規(guī)則3.1 數(shù)據(jù)與數(shù)據(jù)類型數(shù)據(jù)與數(shù)據(jù)類型數(shù)據(jù)結(jié)構(gòu)+算法=程序。 C語言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的。C51數(shù)據(jù)類型與標(biāo)準(zhǔn)C數(shù)據(jù)類型的最大不同之處:位型。在程序?qū)τ玫降乃袛?shù)據(jù)必須指定其數(shù)據(jù)類型。位型(bit

2、)字符型(char)整型(int)長整型(long)浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)數(shù)組類型(array)結(jié)構(gòu)體類型(struct)共用體(union)枚舉(enum)基本類型構(gòu)造類型指針類型空類型數(shù)據(jù)類型C51數(shù)據(jù)類型的取值范圍:數(shù)據(jù)類型的取值范圍:數(shù)據(jù)類型數(shù)據(jù)類型長度(長度(bit)長度(長度(byte)值域范圍值域范圍bit10,1unsigned char810255signed char81128127unsigned int162065535signed int162 3276832767unsigned float32404294967295signed floa

3、t324 21474836482147483647float3241.176E-383.40E+38(63.40E+38(6位數(shù)字位數(shù)字) )double6481.176E-383.40E+38(103.40E+38(10位數(shù)字位數(shù)字) )一般指針一般指針243存儲空間存儲空間0655353.2 常量與變量常量與變量 C語言中數(shù)據(jù)有常量和變量之分 常量:字面常量:如12,4.6,A 符號常量:用標(biāo)識符代表常量 常量定義: #define 常量名 常量值 #define CONST 60 變量:變量名(內(nèi)存中存貯單元的地址,符號地址) 變量定義:數(shù)據(jù)類型 變量名; int result; 習(xí)慣上

4、,常量名用大寫,變量名用小寫(C語言區(qū)分大小寫) 符號常量與變量的區(qū)別:在作用域內(nèi),常量的值不能改變,也不能用等號賦值。 標(biāo)識符:用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列均稱為標(biāo)識符。 C語言規(guī)定:標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一字符必須為字母。 在C語言中,要求對所用到的變量作強(qiáng)制定義,也就是“先定義,后使用”。3.2.1 整型數(shù)據(jù)一、整型常量(整常數(shù))的表示方法:1. 十進(jìn)制整數(shù):如:12,02. 八進(jìn)制整數(shù):以0開頭的數(shù)是八進(jìn)制數(shù)。 如0123,即(123)8,-0113. 十六進(jìn)制整數(shù):以0 x開頭。如0 x57,-0 x12二、整型變

5、量1. 分類:根據(jù)數(shù)值的范圍分為:基本整型、短整型、長整型u 基本整型:以int表示。signed int,unsigned intu 短整型:以short int 或short表示。 signed short int,unsigned short intu 長整型:以long int 或long表示。 signed long int, unsigned long int2. 定義類型標(biāo)識符 變量名3. 數(shù)據(jù)溢出int a,b;a=32767; /*0111*/b=a+1; /*1000,b=-32768溢出,但運(yùn)行時并 不報(bào)錯,注意*/三、整型常量的類型1. 值在-3276832767范圍內(nèi)

6、的整數(shù),認(rèn)為是int型。2. 超過上述范圍,而在-231(231-1)范圍內(nèi)的整數(shù),認(rèn)為是long型。3. 整常量后面加一個字母u,認(rèn)為是unsigned int型(最高位不作符號位)4. 整常量后面加一個字母l或L,認(rèn)為是long型。如123L。3.2.2 實(shí)型數(shù)據(jù)一、實(shí)型常量的表示方法1. 十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))。如:.123,123.,123.02. 指數(shù)形式:如123e3或123E3代表123103。e之前必須有數(shù)字,e后面的指數(shù)必須為整數(shù)。規(guī)范化的指數(shù)形式:e之前的小數(shù)部分中,小數(shù)點(diǎn)左邊有且僅有一位非零數(shù)字。如1.23e2二、實(shí)型變量1. 分類:單精度(f

7、loat):4byte,67位有效數(shù)字 雙精度(double):8byte,1516位有效數(shù)字 長雙精度(long double):10byte,較少用2. 定義:類型標(biāo)識符 變量名;三、實(shí)型常量的類型:一般作為雙精度來處理,可在數(shù)后面加f或F來表示單精度。3.2.3 字符型數(shù)據(jù)一、字符常量: 用單引號括起來的一個字符。如a,F(xiàn),$ C還允許用一咱特殊形式的字符常量,就是用一個“”開頭的字符序列。如:printf(“ ab ct derftgn”); n代表一個換行符,是一種控制字符。在屏幕上是不能顯示的。在程序中也無法用一個一般形式的字符表示,只能采用特殊形式表示,稱為轉(zhuǎn)義字符。意思是后面的

8、字符轉(zhuǎn)換成另外的意義,常用的以開頭的特殊字符如下表:字符形式含義ASCII代碼n換行,將當(dāng)前位置移到下一行開頭10t水平制表(跳到下一個tab位置)9b退格,將當(dāng)前位置移到前一列8r回車,將當(dāng)前位置移到本行開頭13f換頁,將當(dāng)前位置移到下頁開頭12反斜杠字符92單引號字符 39”雙引號字符34ddd1到3位8進(jìn)制所代表的字符如012換行101字符Axhh1到2位16進(jìn)制所代表的字符二、字符變量定義形式:char 變量名;注意:一個字符變量只能存放一個字符,不能存放字符串。三、字符數(shù)據(jù)在內(nèi)存中的存儲形式和使用方法 字符數(shù)據(jù)以ASCII碼存儲。既可以以字符形式輸出,也可以以整數(shù)形式輸出。也可以對字

9、符數(shù)據(jù)進(jìn)行運(yùn)算。例:main() char c1,c2;c1=97; c2=98;/*相當(dāng)于c1=a; c2=b;*/printf(“%c%cn”,c1,c2);/*以字符形式輸出 ab*/printf(“%d%dn”,c1,c2);/*以整數(shù)形式輸出 97 98*/ 例:大小寫字母轉(zhuǎn)換main()char c1,c2; c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c%c”,c1,c2); 字符型數(shù)據(jù)和整型數(shù)據(jù)可以相互賦值。 字符變量的最高位作為符號位,即signed char??啥x無符號字符型變量,unsigned char型。 為書寫方便,常使用簡化的縮寫形

10、式來定義變量的類型。 方法:在源程序開頭用define說明。例:#define uint unsigned int # define uchar unsigned char uchar c1; uint result;四、字符串常量用一對雙引號括起來的字符序列。如:”china”,”How do you do.”,”a”,”12.3”可以輸出一個字符串。如printf(“How do you do.”);C規(guī)定:在每一個字符串的結(jié)尾加一個字符串結(jié)束標(biāo)志,以使系統(tǒng)判斷字符串是否結(jié)束。以字符0作為字符串結(jié)束標(biāo)志,由系統(tǒng)自動添加。不能將字符串賦給字符變量。C語言沒有專門的字符串變量,使用字符數(shù)組存放

11、字符串。3.2.4 位變量 標(biāo)識符為bit 位變量的值可以是1或0 bit型變量只占用一位存儲單元,位于內(nèi)部RAM的可位尋址區(qū) 對于可位尋址的SFR空間的字節(jié),可以字義特殊位變量標(biāo)識該字節(jié)的某一位,這種位變量類型的標(biāo)識符為sbit3.3 C51數(shù)據(jù)的存儲類型數(shù)據(jù)的存儲類型 C51定義的任何數(shù)據(jù)類型必須以一定的存儲類型定位在8051的某一存儲區(qū)中,否則沒有任何實(shí)際意義。存儲類型與存儲空間的對應(yīng)關(guān)系data直接尋址片內(nèi)數(shù)據(jù)存儲區(qū),訪問速度快(128字節(jié))bdata可位尋址片內(nèi)數(shù)據(jù)存儲區(qū),允許位與字節(jié)混合訪問(16字節(jié))idata間接尋址片內(nèi)數(shù)據(jù)存儲區(qū),可訪問片內(nèi)全部RAM地址空間(256字節(jié))pd

12、ata分頁尋址片外數(shù)據(jù)存儲區(qū)(256字節(jié)),由MOVX Ri訪問xdata尋址片外數(shù)據(jù)存儲區(qū)(64K字節(jié)),有MOVX DPTR訪問code尋址代碼存儲區(qū)(64K字節(jié)),有MOVC DPTR訪問 例:#define uchar unsigned charuchar data a1;bit bdata flag;uchar xdata s=3,4,7,2,45,8;uchar code table10=0 x3f,0 x06,0 x5b,0 x4f, 沒有指定存儲類型時,由編譯系統(tǒng)的存儲模式將其存于缺?。J(rèn))存儲空間。 C51編譯器的存儲模式包括:SMALL,COMPACT,LARGE。 C5

13、1編譯器的存儲模式一般為小模式,缺省存儲類型為data3.4 8051特殊功能寄存器及其特殊功能寄存器及其C51定義定義 21個SFR分布在片內(nèi)RAM的高128字節(jié)中,對SFR的操作只能作直接尋址方式,其中有11個或位尋址的寄存器。 在C51中,SFR及其可位尋址的位是通過關(guān)鍵字sfr和sbit 來定義的。這種定義方法與標(biāo)準(zhǔn)C不兼容,只適用于C51。 注意: sfr和sbit 只能在函數(shù)外使用,一般放在程序開頭。例:sfr PSW=0 xD0; /*定義PSW寄存器地址為D0H*/sfr TMOD=0 x89; PSW是可位尋址的SFR,其中各位的定義用sbit例:sbit CY=0 xD7;

14、 /*定義位CY(其位地址為D7H)*/sbit AC=0 xD06;sfr PSW=0 xD0;sbit RS0=PSW3 大部分特殊功能寄存器及其可位尋址的位的定義在reg51.h、reg52.h等相應(yīng)的頭文件中已經(jīng)給出。使用時需在源文件中包含相應(yīng)的頭文件,即或作用SFR及其可位尋址的位。對于未定義的位,在使用前必須先定義。 例:#include “reg51.h”sbit P10=P10;sbit P12=P12;main()P10=1;P12=0;PSW=0 x08;/*等價(jià)的定義RS0=1;RS1=0;*/if(OV=1)3.5 8051并行接口及其并行接口及其C51定義定義單片機(jī)內(nèi)

15、部并行口用sfr定義,外部并行口的定義如何定義?用指針定義,指針的定義在absacc.h頭文件中例如:#include “absacc.h”#define PA XBYTE0 xffec/*將PA定義為外部I/O口,地址為0 xffec */main()PA=0 x3A; /*將數(shù)據(jù)3AH寫入地址為0 xffec的存儲單元或I/O端口*/3.6 位變量及其位變量及其C51定義定義1. 位變量的定義:關(guān)鍵字bit來定義,它的值是一個二進(jìn)制位。例:bit lock;bit dirention;/*將lock,direction定義為位變量*/2. 對位變量的限制: 不能定義位變量指針 不能定義位變

16、量數(shù)組 位變量說明中可以指定存儲類型,位變量的存儲類型只能是bdata3. 可位尋址對象:即可以字節(jié)尋址也可以位尋址。其存儲類型只能是bdata。使用時,先定義字節(jié)變量的數(shù)據(jù)類型和存儲類型,然后使用sbit關(guān)鍵字定義其中可獨(dú)立尋址訪問的位變量。例:int bdata a;char bdata b4;sbit a0=a0;sbit a12=a12;sbit b03=b03; sbit b36=b36;3.7 C51運(yùn)算符、表達(dá)式及其規(guī)則運(yùn)算符、表達(dá)式及其規(guī)則 運(yùn)算符就是完成某種特定運(yùn)算的符號。運(yùn)算符按其表達(dá)式中與運(yùn)算符的關(guān)系可分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符。單目就是指需要有一個運(yùn)算對象,

17、雙目就要求有兩個運(yùn)算對象,三目則要三個運(yùn)算對象。表達(dá)式是由運(yùn)算符及運(yùn)算對象所組成的具有特定含義的式子。C是一種表達(dá)式語言,表達(dá)式后面加“;”號就構(gòu)成了一個表達(dá)式語句。 C51的運(yùn)算符主要有:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值及復(fù)合賦值運(yùn)算符。3.7.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式1. 基本的算術(shù)運(yùn)算符+加或取正值運(yùn)算符- 減或取負(fù)值運(yùn)算符*乘運(yùn)算符/ 除運(yùn)算符% 模(取余)運(yùn)算符(要求兩側(cè)操作數(shù)均為整型數(shù)據(jù))2. 自增、自減運(yùn)算符(單目運(yùn)算符)+ 為自增運(yùn)算符- 為自減運(yùn)算符注意:(1)+、-運(yùn)算符只能用于變量,不能用于常量或表達(dá)式。(2)當(dāng)+j時,先將變量j

18、的值加1(j=j+1),再取變量值 當(dāng)j+時,是先取變量值,再把變量值加1 (j=j+1)。例:a=2,b=+a,則b=3,a=3a=2,b=a+,則b=2,a=33. 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性 算術(shù)表達(dá)式:用算術(shù)運(yùn)算符和括號將操作數(shù)連接起來的式子。 形式為:操作數(shù)1 算術(shù)運(yùn)算符 操作數(shù)2 操作數(shù)可以是常量、變量、函數(shù)、數(shù)組、結(jié)構(gòu)等。如:a+b*(10-a)、a*(b+c)-(d-e)/f 優(yōu)先級:單目高于雙目,先乘除模,后加減,括號最優(yōu)先。 結(jié)合性:單目、三目、賦值運(yùn)算符自右向左結(jié)合(右結(jié)合性),其它自左向右(左結(jié)合性)。 例:-i+=-(i+)4. 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 運(yùn)算符的兩

19、側(cè)數(shù)據(jù)類型不同時,則必須利用強(qiáng)制類型轉(zhuǎn)換將數(shù)據(jù)轉(zhuǎn)換成所需類型。(1)一般形式為:(類型名)(表達(dá)式)例:(double)a(int)a%(int)b(int)(x+y)表達(dá)式必須用括號括起來。例:(double)x+y=(double)(x)+y(double)(x+y)(2)自動(缺?。╊愋娃D(zhuǎn)換轉(zhuǎn)換規(guī)則:doublelong unsigned int float char高 低3.7.2 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式1. 關(guān)系運(yùn)算符及其優(yōu)先級C51中有6種關(guān)系運(yùn)算符: 大于 = 大于等于 =c+d、(a=3)(b=2)關(guān)系表達(dá)式的結(jié)果為邏輯值:真和假。C51中0表示假,1表示

20、真。3.7.3 邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式1. 邏輯運(yùn)算符及其優(yōu)先級& 邏輯與| 邏輯或 !邏輯非優(yōu)先級: (1)!高于 &, &高于 | (2)!、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、 &、|、賦值運(yùn)算符結(jié)合性:左結(jié)合2. 邏輯表達(dá)式用邏輯運(yùn)算符將兩個表達(dá)式或邏輯量連接起來的式子。表達(dá)式的結(jié)果為邏輯值:真和假。如:a=4,b=0,則a&b為0邏輯表達(dá)式的執(zhí)行規(guī)則:不完全執(zhí)行例:a&b&c,若a的值為0,則不需判斷b和c就可確定結(jié)果a|b|c,若a=0,則需判斷b值,若b=1,則可確定表達(dá)式結(jié)果3.7.4 位運(yùn)算符及其表達(dá)式位運(yùn)算符及其表達(dá)式1. C51中共有6種位運(yùn)算符:& 按位與| 按位或 按位異或 按位取反 右移優(yōu)先級:從高到低依次是:、&、| 結(jié)合性:單目右結(jié)合,雙目左結(jié)合注意:位運(yùn)算的操作對象只能是整型或字符型2. 各運(yùn)算符作用&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論