版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【-學(xué)案導(dǎo)學(xué)設(shè)計(jì)】2020-2021學(xué)年高中物理(人教版-選修3-1)第3章-第3節(jié)-課時作業(yè)
- 【名師一號】2020-2021學(xué)年高中地理新課標(biāo)版必修1-雙基限時練11
- 《紅對勾》2022屆高考英語人教版新課標(biāo)一輪總復(fù)習(xí)-滾動測試10
- 永州市2025屆高三高考第二次模擬考試(二模)生物試卷
- 【創(chuàng)新大課堂】2022屆高三生物一輪復(fù)習(xí)人教版課時作業(yè)-第4單元-第11講-減數(shù)分裂和受精作用-
- 【創(chuàng)新設(shè)計(jì)】2021版生物二輪專題復(fù)習(xí)(閩津渝版)專題整合+演練提升:1-7-1基因工程與克隆技術(shù)
- 天津市外國語大學(xué)附屬外國語學(xué)校2024-2025學(xué)年七年級上學(xué)期期末階段性檢測英語試題(含答案無聽力原文無音頻)
- (語文試卷)2024年秋綿陽市游仙區(qū)九年級期末測試
- 浙江音樂學(xué)院2023年本科招生簡章
- 【名師一號】2020-2021學(xué)年高中英語人教版必修4語篇提能-22
- 升降柱 施工方案
- 中建辦公商業(yè)樓有限空間作業(yè)專項(xiàng)施工方案
- 堤防工程施工規(guī)范
- 小細(xì)胞肺癌治療進(jìn)展及預(yù)后
- 成品出貨檢驗(yàn)報(bào)告模板
- 湖北省武漢市江岸區(qū)2023-2024學(xué)年四上數(shù)學(xué)期末檢測模擬試題含答案
- 藍(lán)色手繪風(fēng)美術(shù)學(xué)碩士畢業(yè)論文答辯ppt模板
- 2023-2024學(xué)年貴陽市花溪區(qū)四年級數(shù)學(xué)第一學(xué)期期末檢測模擬試題含答案
- 鍋爐使用記錄三張表
- 五年級上冊書法教學(xué)設(shè)計(jì)-7《點(diǎn)與撇的分布》 湘美版
- 法院解凍協(xié)議書
評論
0/150
提交評論