第三章C51數(shù)據(jù)與運(yùn)算_第1頁(yè)
第三章C51數(shù)據(jù)與運(yùn)算_第2頁(yè)
第三章C51數(shù)據(jù)與運(yùn)算_第3頁(yè)
第三章C51數(shù)據(jù)與運(yùn)算_第4頁(yè)
第三章C51數(shù)據(jù)與運(yùn)算_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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)介

1、第三章第三章 C51數(shù)據(jù)與運(yùn)算數(shù)據(jù)與運(yùn)算3.1 數(shù)據(jù)與數(shù)據(jù)類(lèi)型數(shù)據(jù)與數(shù)據(jù)類(lèi)型3.2 常量與變量常量與變量3.3 C51數(shù)據(jù)的存儲(chǔ)類(lèi)型與數(shù)據(jù)的存儲(chǔ)類(lèi)型與8051存儲(chǔ)結(jié)構(gòu)存儲(chǔ)結(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ù)類(lèi)型數(shù)據(jù)與數(shù)據(jù)類(lèi)型數(shù)據(jù)結(jié)構(gòu)+算法=程序。 C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類(lèi)型形式出現(xiàn)的。C51數(shù)據(jù)類(lèi)型與標(biāo)準(zhǔn)C數(shù)據(jù)類(lèi)型的最大不同之處:位型。在程序?qū)τ玫降乃袛?shù)據(jù)必須指定其數(shù)據(jù)類(lèi)型。位型(bit

2、)字符型(char)整型(int)長(zhǎng)整型(long)浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)數(shù)組類(lèi)型(array)結(jié)構(gòu)體類(lèi)型(struct)共用體(union)枚舉(enum)基本類(lèi)型構(gòu)造類(lèi)型指針類(lèi)型空類(lèi)型數(shù)據(jù)類(lèi)型C51數(shù)據(jù)類(lèi)型的取值范圍:數(shù)據(jù)類(lèi)型的取值范圍:數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型長(zhǎng)度(長(zhǎng)度(bit)長(zhǎng)度(長(zhǎng)度(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存儲(chǔ)空間存儲(chǔ)空間0655353.2 常量與變量常量與變量 C語(yǔ)言中數(shù)據(jù)有常量和變量之分 常量:字面常量:如12,4.6,A 符號(hào)常量:用標(biāo)識(shí)符代表常量 常量定義: #define 常量名 常量值 #define CONST 60 變量:變量名(內(nèi)存中存貯單元的地址,符號(hào)地址) 變量定義:數(shù)據(jù)類(lèi)型 變量名; int result; 習(xí)慣上

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

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

6、的整數(shù),認(rèn)為是int型。2. 超過(guò)上述范圍,而在-231(231-1)范圍內(nèi)的整數(shù),認(rèn)為是long型。3. 整常量后面加一個(gè)字母u,認(rèn)為是unsigned int型(最高位不作符號(hào)位)4. 整常量后面加一個(gè)字母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. 分類(lèi):?jiǎn)尉龋╢

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

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

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*/ 例:大小寫(xiě)字母轉(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ù)可以相互賦值。 字符變量的最高位作為符號(hào)位,即signed char??啥x無(wú)符號(hào)字符型變量,unsigned char型。 為書(shū)寫(xiě)方便,常使用簡(jiǎn)化的縮寫(xiě)形

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

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

12、ata分頁(yè)尋址片外數(shù)據(jù)存儲(chǔ)區(qū)(256字節(jié)),由MOVX Ri訪(fǎng)問(wèn)xdata尋址片外數(shù)據(jù)存儲(chǔ)區(qū)(64K字節(jié)),有MOVX DPTR訪(fǎng)問(wèn)code尋址代碼存儲(chǔ)區(qū)(64K字節(jié)),有MOVC DPTR訪(fǎng)問(wèn) 例:#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, 沒(méi)有指定存儲(chǔ)類(lèi)型時(shí),由編譯系統(tǒng)的存儲(chǔ)模式將其存于缺?。J(rèn))存儲(chǔ)空間。 C51編譯器的存儲(chǔ)模式包括:SMALL,COMPACT,LARGE。 C5

13、1編譯器的存儲(chǔ)模式一般為小模式,缺省存儲(chǔ)類(lèi)型為data3.4 8051特殊功能寄存器及其特殊功能寄存器及其C51定義定義 21個(gè)SFR分布在片內(nèi)RAM的高128字節(jié)中,對(duì)SFR的操作只能作直接尋址方式,其中有11個(gè)或位尋址的寄存器。 在C51中,SFR及其可位尋址的位是通過(guò)關(guān)鍵字sfr和sbit 來(lái)定義的。這種定義方法與標(biāo)準(zhǔn)C不兼容,只適用于C51。 注意: sfr和sbit 只能在函數(shù)外使用,一般放在程序開(kāi)頭。例: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)給出。使用時(shí)需在源文件中包含相應(yīng)的頭文件,即或作用SFR及其可位尋址的位。對(duì)于未定義的位,在使用前必須先定義。 例:#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寫(xiě)入地址為0 xffec的存儲(chǔ)單元或I/O端口*/3.6 位變量及其位變量及其C51定義定義1. 位變量的定義:關(guān)鍵字bit來(lái)定義,它的值是一個(gè)二進(jìn)制位。例:bit lock;bit dirention;/*將lock,direction定義為位變量*/2. 對(duì)位變量的限制: 不能定義位變量指針 不能定義位變

16、量數(shù)組 位變量說(shuō)明中可以指定存儲(chǔ)類(lèi)型,位變量的存儲(chǔ)類(lèi)型只能是bdata3. 可位尋址對(duì)象:即可以字節(jié)尋址也可以位尋址。其存儲(chǔ)類(lèi)型只能是bdata。使用時(shí),先定義字節(jié)變量的數(shù)據(jù)類(lèi)型和存儲(chǔ)類(lèi)型,然后使用sbit關(guān)鍵字定義其中可獨(dú)立尋址訪(fǎng)問(wèn)的位變量。例: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)算的符號(hào)。運(yùn)算符按其表達(dá)式中與運(yùn)算符的關(guān)系可分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符。單目就是指需要有一個(gè)運(yùn)算對(duì)象,

17、雙目就要求有兩個(gè)運(yùn)算對(duì)象,三目則要三個(gè)運(yùn)算對(duì)象。表達(dá)式是由運(yùn)算符及運(yùn)算對(duì)象所組成的具有特定含義的式子。C是一種表達(dá)式語(yǔ)言,表達(dá)式后面加“;”號(hào)就構(gòu)成了一個(gè)表達(dá)式語(yǔ)句。 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時(shí),先將變量j

18、的值加1(j=j+1),再取變量值 當(dāng)j+時(shí),是先取變量值,再把變量值加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)先級(jí)與結(jié)合性 算術(shù)表達(dá)式:用算術(shù)運(yùn)算符和括號(hào)將操作數(shù)連接起來(lái)的式子。 形式為:操作數(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)先級(jí):?jiǎn)文扛哂陔p目,先乘除模,后加減,括號(hào)最優(yōu)先。 結(jié)合性:?jiǎn)文?、三目、賦值運(yùn)算符自右向左結(jié)合(右結(jié)合性),其它自左向右(左結(jié)合性)。 例:-i+=-(i+)4. 強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符 運(yùn)算符的兩

19、側(cè)數(shù)據(jù)類(lèi)型不同時(shí),則必須利用強(qiáng)制類(lèi)型轉(zhuǎn)換將數(shù)據(jù)轉(zhuǎn)換成所需類(lèi)型。(1)一般形式為:(類(lèi)型名)(表達(dá)式)例:(double)a(int)a%(int)b(int)(x+y)表達(dá)式必須用括號(hào)括起來(lái)。例:(double)x+y=(double)(x)+y(double)(x+y)(2)自動(dòng)(缺?。╊?lèi)型轉(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)先級(jí)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)先級(jí)& 邏輯與| 邏輯或 !邏輯非優(yōu)先級(jí): (1)!高于 &, &高于 | (2)!、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、 &、|、賦值運(yùn)算符結(jié)合性:左結(jié)合2. 邏輯表達(dá)式用邏輯運(yùn)算符將兩個(gè)表達(dá)式或邏輯量連接起來(lái)的式子。表達(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)先級(jí):從高到低依次是:、&、| 結(jié)合性:?jiǎn)文坑医Y(jié)合,雙目左結(jié)合注意:位運(yùn)算的操作對(duì)象只能是整型

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論