![第4章單片機(jī)語言程序設(shè)計講課學(xué)生用_第1頁](http://file4.renrendoc.com/view/b5b6fd19a28b770ff889ce8b461165e0/b5b6fd19a28b770ff889ce8b461165e01.gif)
![第4章單片機(jī)語言程序設(shè)計講課學(xué)生用_第2頁](http://file4.renrendoc.com/view/b5b6fd19a28b770ff889ce8b461165e0/b5b6fd19a28b770ff889ce8b461165e02.gif)
![第4章單片機(jī)語言程序設(shè)計講課學(xué)生用_第3頁](http://file4.renrendoc.com/view/b5b6fd19a28b770ff889ce8b461165e0/b5b6fd19a28b770ff889ce8b461165e03.gif)
![第4章單片機(jī)語言程序設(shè)計講課學(xué)生用_第4頁](http://file4.renrendoc.com/view/b5b6fd19a28b770ff889ce8b461165e0/b5b6fd19a28b770ff889ce8b461165e04.gif)
![第4章單片機(jī)語言程序設(shè)計講課學(xué)生用_第5頁](http://file4.renrendoc.com/view/b5b6fd19a28b770ff889ce8b461165e0/b5b6fd19a28b770ff889ce8b461165e05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
CC語言與MCS-51片內(nèi)數(shù) 器與特殊功能寄存器使用按實際地址處理端口數(shù)據(jù)。C不用像匯編語言那樣具體組織、分 器資源CC語言根據(jù)單片機(jī)結(jié)構(gòu)及內(nèi)部資源定義數(shù)據(jù)類型和變量;對數(shù)據(jù)類型與變量的定義,要與單片 結(jié)構(gòu)相關(guān)聯(lián)否則編譯器不能正確地映射定位。標(biāo)準(zhǔn)C語言程序不需要考慮這些問題;C51包含的數(shù)據(jù)類型、變 模式、輸入輸出處理、函等方面與標(biāo)準(zhǔn)C語言有一定區(qū)別。C51C51與標(biāo)準(zhǔn)CC51中的數(shù)據(jù)類型與標(biāo)準(zhǔn)語言的數(shù)據(jù)類型也有一定的區(qū)別。C51在變量定義與使用上與標(biāo)準(zhǔn)C語言不一樣。(3)為了方便對51,C51對地 上對標(biāo)準(zhǔn)C語言進(jìn)行了擴(kuò)展(4)C51中函數(shù)的定義與使用與標(biāo)準(zhǔn)C語言也不完全相同。54.24.2C51的數(shù)據(jù)字符型位類型int整型long整型指針型float浮點(diǎn)C51C51數(shù)據(jù)類型與標(biāo)準(zhǔn)C中數(shù)據(jù)類型基本相同;C51中還有專門針對于MCS-51單片機(jī)的特殊功能寄存器型和位類型。4.2.1C51字符型長度均為一個字節(jié),存放一個單字節(jié)的數(shù)據(jù)。 char,定義帶符號字節(jié)數(shù)據(jù);數(shù)值范圍是- char,存放一個字節(jié)的無符號數(shù),其取值范圍為0~255 char可以用來存放無符號數(shù),也可以存放西文字符;一個西文字符占一個字節(jié),在計算機(jī)內(nèi)部用ASCII碼存放。22.int整型長度均為兩個字節(jié),用于存放一個雙字節(jié)數(shù)據(jù)。 int,存放兩字節(jié)帶符號數(shù),補(bǔ)碼表示;數(shù)的范圍為- int,存放兩字節(jié)無符號數(shù);數(shù)的范圍為0~6553533.long長度均 節(jié),存放一個四字節(jié)數(shù)據(jù) long數(shù)的范圍為 7 long數(shù)的范圍為 44.float浮點(diǎn)float型數(shù)據(jù)長度為節(jié),格式符合IEEE-754標(biāo)準(zhǔn)的單精度浮點(diǎn)型數(shù)據(jù),包含指數(shù)和尾數(shù)兩部分; 為符號位,“1”表示負(fù)數(shù),“0”表示正數(shù)其次8位為階碼,最后23位為尾數(shù)的有效數(shù)位;尾數(shù)的整數(shù)部分隱含為“1”,尾數(shù)精度為24位。55.*指針型數(shù)據(jù)本身就是一個變量,在這個變量中存放的指向另一個數(shù)據(jù)的地址。4.2.24.2.2C51特有的數(shù)據(jù)1.特殊功能寄存器型用于MCS-51單片機(jī)中的特殊功能寄存器分sfr和sfr16兩種類型;sfr為字節(jié)型特殊功能寄存器類型,占一個內(nèi)存單元;MCS-51內(nèi)部所有特殊功能寄存器;sfr16為雙字節(jié)型特殊功能寄存器類型,占用兩個字節(jié)單元;MCS-51內(nèi)部所有兩個字節(jié)特殊功能寄存器對特殊功能寄存器必須先用sfr或sfr16進(jìn)行22.位類型MCS-51單片機(jī)中可尋址的位單元在C51中,支持兩種位類型:bit型和sbit它們在內(nèi)存中都只占一個二進(jìn)制位;其值可以是“1”或“0”長1signed1-2signed2-44 41.175494E-0或0或124.3.14.3.1C51的普通變量及定義一個變量由兩部分組成:變量名和變量值。變量在使用前必須對變量進(jìn)行定義;變量的數(shù)據(jù)類型和模式以便編譯系統(tǒng)為它分配相應(yīng)的單元定義的格式如下:[種類]數(shù)據(jù)類型說明符[器類型]變量名1[=初值],變量名2[=初值]…;11.?dāng)?shù)據(jù)類型說明符在定義變量時,必須通過數(shù)據(jù)類型說明符指明變量的數(shù)據(jù)類型,指明變量在 器中占用的字節(jié)數(shù)。允許用戶為系統(tǒng)固有的數(shù)據(jù)類型說明符用typedef起別名,格式如下:typedefC51固有的數(shù)據(jù)類名或者 別名C51固有的數(shù)據(jù)類型說明符定義別名后,就可以用別名代替數(shù)據(jù)類型說明符對變量進(jìn)行定義。(1)(1)typedef只是對已經(jīng)存在的類型增加一個類型名,而沒有創(chuàng)造新的類型。僅用來起一個新的名字(2)typedef變量。各種類型名,但不能用來定義(3)typedef和#define有相似之處,但又不相同。#define是編譯之前進(jìn)行預(yù)處理時作簡單的字符串替換,而typedef是在編譯時處理的?!纠纠?.1】typedef的使用。typedefunsignedintWORD;#defineBYTEunsignedchar;BYTEa1=0x12;WORD2.變量名變量名有兩種:普通變量名和指針變量名。指針變量名前面要帶“*號33種種類是指自動省種外部靜態(tài)C51種類有四種44器類型器類型指明變量所處 器區(qū)直接尋址的片內(nèi)RAM低128B,速度片內(nèi)RAM的可位尋址區(qū)(20H~2FH),允許字節(jié)和位混合間接尋址的片內(nèi)RAM,允許全部片內(nèi)用Ri間接的片外RAM的低用DPTR間接的片外RAM,允許全部64KB片外程序器ROM64KB空模模小編譯模式,緊湊編譯模式,大編譯模式。模 變量被默認(rèn)在模模變變模式的指定通過#pragma預(yù)處理命令來實現(xiàn)。模式可通過在函數(shù)定義時后面 模式說明如果沒有指定,則系統(tǒng)都隱含為SMALL模式?!尽纠?.2】變量定義種類器類型相關(guān)情況。chardatavar1;/*在片內(nèi)RAM低 的字符型變量intidatavar2;/*在片內(nèi)RAM autounsignedlongdata/*在片內(nèi) 的自動無符號長整型變量externfloatxdata/*在片外 64KB空 的外部浮點(diǎn)型變量intcode /*在ROM空間定義整型變量unsignedcharbdata允許用戶對特殊功能寄存器進(jìn)行允許用戶對特殊功能寄存器進(jìn)行或sfr16類型說明符進(jìn)行定義;,時需通過定義時需指明它們所對應(yīng)片內(nèi)RAM單元的地址。sfr或sfr16特殊功能寄存器名=sfr用于對單字節(jié)特殊功能寄存器進(jìn)行定義;sfr16用于對雙字節(jié)特殊功能寄存器進(jìn)行定義;特殊功能寄存器名一般用大寫字母表示。4.3.24.3.2C51的特殊功能寄存【例4.3】特殊功能寄存器的定義sfrsfrSCON=0x98;sfrTMOD=0x89;sfrP1=0x90;sfr16DPTR=0x82;sfr16T1=0x8C;sfr16允許用戶通過位類型符定義位變量。允許用戶通過位類型符定義位變量。位類型符有兩個:bit和sbit??梢远x兩種位變量。bit位類型符用于定義一般的位變量。bit只能是片內(nèi)RAM的可位尋址區(qū),嚴(yán)格來說只能是bdata【例4.4bit型變量的定義bitbdataa2;/*正確*/bitpdataa3;/*錯誤*/bitxdataa4;/*錯誤*/4.3.34.3.3C51的位變sbit位類型符用于定義在可位尋址字節(jié)或特殊功能寄存器中的位,定義時需指明其位地址;可以是位直接地址,可以是可位尋址變量帶位號;也可以是特殊功能寄存器名帶位號。sbit位變量名=位地字節(jié)地址與位號之間、特殊功能寄存器與位號之間一般用“^”作間隔sbitOV=sbitsfrsbitCY=PSW^7;sbit【例【例4.5】sbit型變量的定義sbitOV=0xD2;sbitunsignedcharbdataflag;sbitflag0=flag^0;sfrP1=0x90;sbitP1_0=P1^0;sbitP1_1=P1^1;sbitsbitsbitsbitsbitsbitsbitC51編譯器把常用的特殊功能寄存器和特殊位進(jìn)行了定義,放在一個“reg51.h”或“reg52.h”的頭文件中;用一條預(yù)處理命令#includereg52.h>把這個頭文件包含到程序中,就可使用特殊功能寄存器名和特殊位名稱。 器型指針”和“一般指針”兩種。 器型指針定義時指明了所指向的數(shù)據(jù)的charxdata2)定義時沒有指明所指向的數(shù)據(jù)的器類型。4.44.4絕對地址展關(guān)鍵字_at_C51C51編譯器提供了一組宏定義來對51系列單片機(jī)的code、定義了8個宏定義;其函數(shù)原型如下:#define#defineCBYTE((unsignedcharvolatile*)0x50000L)#defineDBYTE((unsignedcharvolatile*)0x40000L)#definePBYTE((unsignedcharvolatile*)0x30000L)#defineXBYTE((unsignedcharvolatile*)0x20000L)#defineCWORD((unsignedintvolatile*)0x50000L)#defineDWORD((unsignedintvolatile*)0x40000L)#definePWORD((unsignedintvolatile*)0x30000L)#defineXWORD((unsignedintvolatile*)0x20000L)這些函數(shù)原型放在absacc.h文件中。使用時需用預(yù)處理命令把該頭文件包含到文件中形式為:#include<absacc.h>CBYTECBYTE以字節(jié)形式對code區(qū)尋址DBYTE以字節(jié)形式對data區(qū)尋址PBYTE以字節(jié)形式對pdata區(qū)尋址XBYTE以字節(jié)形式對xdata區(qū)尋址CWORD以字形式對code區(qū)尋址DWORD以字形式對data區(qū)尋址PWORD以字形式對pdata區(qū)尋址XWORD以字形式對xdata形式如下:宏名[地址宏名為CBYTE、DBYTE、PBYTE、XBYTE、CWORD、DWORDPWORD或XWORD地址為單元的絕對地址,一般用十六進(jìn)制形式表示。 #include<absacc.h> #include<reg52.h> #defineucharunsignedchar/*定義符號uchar為數(shù)據(jù)類型符unsigned#defineuintunsignedint voidmain(void){ucharvar1;uintvar2;var1=XBYTE[0x0005];/*XBYTE[0x0005]片外RAM的0005字節(jié)單元*/var2=XWORD[0x0002];/*XWORD[0x0002]片外RAM的0002字單元*/}XBYTE[0x0005]是以絕對地址方式XWORD[0x0002]是以絕對地址方式的片外 0005字節(jié)單元的片外0002字單元。#defineucharunsigned/*定義符號uchar為數(shù)據(jù)類型符unsigned#defineuintunsignedint /*定義符號uint為數(shù)據(jù)類型符unsignedint*/voidmain(void){uchardataucharpdata*dp1;/*定義一個指向pdata區(qū)的指針dp1*/uintxdata*dp2;/*定義一個指向xdata區(qū)的指針dp2*/uchardata*dp3; /*將數(shù)據(jù)0xff送到片外RAM0030H單元 /*給變量var1賦值}使使用_at_對指定器空間的絕對地址進(jìn)行: 器類型]數(shù)據(jù)類型說_at_地址常數(shù)器類型為data、bdata、idata、pdata等C51能識別的數(shù)據(jù)類型;如省略則 模式規(guī)定的默 器類型確定變量 器區(qū)域數(shù)據(jù)類型為C51支持的數(shù)據(jù)類型。地址常數(shù)用于指定變量的絕對地址,必須位于有效的 間之內(nèi);使用_at_定義的變量必須為全局變量?!纠纠?.8】通過_at_實現(xiàn)絕對地址 #defineucharunsigned/*定義符號uchar為數(shù)據(jù)類型符 #defineuintunsignedint dataucharx1_at_0x40;xdatauintx2_at_0x2000;voidmain(void){}C51C51有3種邏輯運(yùn)算符: 邏輯 邏輯 邏輯注意:邏輯運(yùn)算符與位操作運(yùn)算符的區(qū)別。C51C51中的位運(yùn)算符有: 按位異或 按位取反【例】設(shè) 左 右B,則a&b、a|ba^b、~a、a<<2、b>>2分別為多少? B,左移位后為 進(jìn)行右移運(yùn)算時,如果是無符號數(shù),則總是在其左端補(bǔ)“0”。如果是有符號數(shù),符號位不變。指針為變量的指針為變量的量的地址C51中提供了兩個專門的運(yùn)算符:式,變量的指針就是該變 指針運(yùn)算符 取地址運(yùn)算符指針變量p中的地址為2000H,則*p 的是地址2000H 單元x=*p,實現(xiàn)把地址為 單元的內(nèi)容送給變量x取地址運(yùn)算符“取地址運(yùn)算符“&”放在變量的前面,通過它取得變量的地址,變量的地址送給指針變量。設(shè)變量x的內(nèi)容為12H,地址為2000H,則&x的值為有一指針變量p,用p=&x,實現(xiàn)將x變量地址送給指針變量指針變量p指向變量x,以后可以通過 變量x程序也由主函數(shù)main開始,并在主函數(shù)中結(jié)束,除了標(biāo)準(zhǔn)庫函數(shù)是C51編譯器提供的,不需要用戶進(jìn)行定義,可以直接調(diào)用。用戶也可自己定義函數(shù)。它們的使用方法與標(biāo)準(zhǔn)C語言基本相同。但C51針對的是51系列單片機(jī),C51的函數(shù)在有些方面還是與標(biāo)準(zhǔn)C語言不同,參數(shù)傳遞和返回值與標(biāo)準(zhǔn)C語言中是不一樣的,而且C51又對標(biāo)準(zhǔn)C語言作了相應(yīng)的擴(kuò)展 第1第2第3無寄存器C(unsigned)(1)(1)SMALL模式。SMALL模式稱為小編譯模式,在SMALL模式下,編譯時函數(shù)參數(shù)和變量被默認(rèn)在內(nèi)RAM中器類型為data模式PACT模式稱為緊湊編譯默認(rèn)在片外RAM的低256B空間 器類型為pdata(3)LARGE模式。LARGE模式稱為大編譯模式,在LARGE模式下,編譯時函數(shù)參數(shù)和變量被默認(rèn)在片外RAM的64B空間,器類型為xdata。函數(shù)定義時后面再相應(yīng)的參數(shù)或large)來指明,系統(tǒng)隱含為SMALL模式?!纠纠?.9】C51模Intfunc1(intx1,inty1)/*函數(shù) 模式為 intz1; x1,y1,z1變量 器類
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型金融期貨交易系統(tǒng)開發(fā)與應(yīng)用合同
- 2025年度度假酒店住宿服務(wù)及價格體系合同
- 2025年度新能源項目回購擔(dān)保融資合同書
- 2025年度能源消耗監(jiān)測合同解除協(xié)議書模板
- 2025年度環(huán)保設(shè)施運(yùn)營管理合同
- 2025年度工業(yè)遺址拆除與文化遺產(chǎn)保護(hù)工程合同范本
- 2025年度一級結(jié)構(gòu)師在綠色建筑技術(shù)創(chuàng)新聘用合同
- 2025年度航空器維修與保養(yǎng)服務(wù)合同
- 2025年度建筑渣土運(yùn)輸與廢棄物處置服務(wù)合同
- 2025年度智能制造股東合作協(xié)議范本
- 2025年1月浙江省高考政治試卷(含答案)
- 教體局校車安全管理培訓(xùn)
- 2025年上半年重慶三峽融資擔(dān)保集團(tuán)股份限公司招聘6人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 20以內(nèi)加減法口算題(10000道)(A4直接打印-每頁100題)
- 《克雷洛夫寓言》專項測試題附答案
- 《中小學(xué)教育懲戒規(guī)則》重點(diǎn)內(nèi)容學(xué)習(xí)PPT課件(帶內(nèi)容)
- 海信rsag7.820.1646ip電源與背光電路圖fan7530、fan7602fan
- 深度配煤摻燒方案
- 中藥霧化吸入操作評分標(biāo)準(zhǔn)
- 學(xué)生個人成長檔案實用模板
- 三一電氣產(chǎn)品外觀通用檢驗標(biāo)準(zhǔn)
評論
0/150
提交評論