版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1.4單片機C51介紹單片機應(yīng)用技術(shù)內(nèi)容引入現(xiàn)在支持MCS-51系列單片機的C語言編譯器有很多種,如AmericanAutomation、Avocet、BSO/TASKING、DUNFIELDSHAREWARE、KEIL/Franklin等。各種編譯器的基本情況相同,但具體處理時有一定的區(qū)別,其中KEIL/Franklin以它的代碼緊湊和使用方便等特點優(yōu)于其它編譯器,現(xiàn)在使用特別廣泛。本課程主要以KEIL編譯器介紹MCS-51單片機C語言程序設(shè)計。C51程序結(jié)構(gòu)(3)C51變量的存儲模式與標(biāo)準(zhǔn)C中變量的存儲模式不一樣,C51中變量的存儲模式是與MCS-51單片機的存儲器緊密相關(guān);(4)C51與標(biāo)準(zhǔn)C的輸入輸出處理不一樣,C51中的輸入輸出是通過MCS-51串行口來完成的,輸入輸出指令執(zhí)行前必須要對串行口進行初始化;(5)C51與標(biāo)準(zhǔn)C在函數(shù)使用方面也有一定的區(qū)別,C51中有專門的中斷函數(shù)。C51的數(shù)據(jù)類型C51的數(shù)據(jù)類型分為基本數(shù)據(jù)類型和組合數(shù)據(jù)類型,情況與標(biāo)準(zhǔn)C中的數(shù)據(jù)類型基本相同,但其中char型與short型相同,float型與double型相同,另外,C51中還有專門針對于MCS-51單片機的特殊功能寄存器型和位類型。C51的數(shù)據(jù)類型一.字符型char
有signedchar和unsignedchar之分,默認(rèn)為signedchar。它們的長度均為一個字節(jié),用于存放一個單字節(jié)的數(shù)據(jù)。對于signedchar,它用于定義帶符號字節(jié)數(shù)據(jù),其字節(jié)的最高位為符號位,“0”表示正數(shù),“1”表示負(fù)數(shù),補碼表示,所能表示的數(shù)值范圍是-128~+127;對于unsignedchar,它用于定義無符號字節(jié)數(shù)據(jù)或字符,可以存放一個字節(jié)的無符號數(shù),其取值范圍為0~255。unsignedchar可以用來存放無符號數(shù),也可以存放西文字符,一個西文字符占一個字節(jié),在計算機內(nèi)部用ASCII碼存放。C51的數(shù)據(jù)類型二.int整型分singedint和unsignedint。默認(rèn)為signedint。它們的長度均為兩個字節(jié),用于存放一個雙字節(jié)數(shù)據(jù)。對于signedint,用于存放兩字節(jié)帶符號數(shù),補碼表示,數(shù)的范疇為-32768~+32767。對于unsignedint,用于存放兩字節(jié)無符號數(shù),數(shù)的范圍為0~65535。三.long長整型分singedlong和unsignedlong。默認(rèn)為signedlong。它們的長度均為四個字節(jié),用于存放一個四字節(jié)數(shù)據(jù)。對于signedlong,用于存放四字節(jié)帶符號數(shù),補碼表示,數(shù)的范疇為-2147483648~+2147483647。對于unsignedlong,用于存放四字節(jié)無符號數(shù),數(shù)的范圍為0~4294967295。C51的數(shù)據(jù)類型四.float浮點型
float型數(shù)據(jù)的長度為四個字節(jié),格式符合IEEE-754標(biāo)準(zhǔn)的單精度浮點型數(shù)據(jù),包含指數(shù)和尾數(shù)兩部分,最高位為符號位,“1”表示負(fù)數(shù),“0”表示正數(shù),其次的8位為階碼,最后的23位為尾數(shù)的有效數(shù)位,由于尾數(shù)的整數(shù)部分隱含為“1”,所以尾數(shù)的精度為24位。五.*指針型指針型本身就是一個變量,在這個變量中存放的指向另一個數(shù)據(jù)的地址。這個指針變量要占用一定的內(nèi)存單元,對不同的處理器其長度不一樣,在C51中它的長度一般為1~3個字節(jié)。C51的數(shù)據(jù)類型六.特殊功能寄存器型這是C51擴充的數(shù)據(jù)類型,用于訪問MCS-51單片機中的特殊功能寄存器數(shù)據(jù),它分sfr和sfr16兩種類型。其中:
sfr為字節(jié)型特殊功能寄存器類型,占一個內(nèi)存單元,利用它可以訪問MCS-51內(nèi)部的所有特殊功能寄存器;
sfr16為雙字節(jié)型特殊功能寄存器類型,占用兩個字節(jié)單元,利用它可以訪問MCS-51內(nèi)部的所有兩個字節(jié)的特殊功能寄存器。在C51中對特殊功能寄存器的訪問必須先用sfr或sfr16進行聲明。C51的數(shù)據(jù)類型七.位類型這也是C51中擴充的數(shù)據(jù)類型,用于訪問MCS-51單片機中的可尋址的位單元。在C51中,支持兩種位類型:bit型和sbit型。它們在內(nèi)存中都只占一個二進制位,其值可以是“1”或“0”。其中:用bit定義的位變量在C51編譯器編譯時,在不同的時候位地址是可以變化的,而用sbit定義的位變量必須與MCS-51單片機的一個可以尋址位單元或可位尋址的字節(jié)單元中的某一位聯(lián)系在一起,在C51編譯器編譯時,其對應(yīng)的位地址是不可變化的。C51的數(shù)據(jù)類型基本數(shù)據(jù)類型長度取值范圍unsignedchar1字節(jié)0~255signedchar1字節(jié)-128~+127unsignedint2字節(jié)0~65535signedint2字節(jié)-32768~+32767unsignedlong4字節(jié)0~4294967295signedlong4字節(jié)-2147483648~+2147483647float4字節(jié)
1.175494E-38~
3.402823E+38bit1位0或1sbit1位0或1sfr1字節(jié)0~255sfr162字節(jié)0~65535C51的數(shù)據(jù)類型
在C51語言程序中,有可能會出現(xiàn)在運算中數(shù)據(jù)類型不一致的情況。C51允許任何標(biāo)準(zhǔn)數(shù)據(jù)類型的隱式轉(zhuǎn)換,隱式轉(zhuǎn)換的優(yōu)先級順序如下:
bit
char
int
long
floatsignedunsigned
也就是說,當(dāng)char型與int型進行運算時,先自動對char型擴展為int型,然后與int型進行運算,運算結(jié)果為int型。C51除了支持隱式類型轉(zhuǎn)換外,還可以通過強制類型轉(zhuǎn)換符“()”對數(shù)據(jù)類型進行人為的強制轉(zhuǎn)換。
C5l編譯器除了能支持以上這些基本數(shù)據(jù)類型之外,還能支持一些復(fù)雜的組合型數(shù)據(jù)類型,如數(shù)組類型、指針類型、結(jié)構(gòu)類型、聯(lián)合類型等這些復(fù)雜的數(shù)據(jù)類型,在后面將相繼介紹。C51運算量
在C51語言程序中,有可能會出現(xiàn)在運算中數(shù)據(jù)類型不一致的情況。C51允許任何標(biāo)準(zhǔn)數(shù)據(jù)類型的隱式轉(zhuǎn)換,隱式轉(zhuǎn)換的優(yōu)先級順序如下:
bit
char
int
long
floatsignedunsigned
也就是說,當(dāng)char型與int型進行運算時,先自動對char型擴展為int型,然后與int型進行運算,運算結(jié)果為int型。C51除了支持隱式類型轉(zhuǎn)換外,還可以通過強制類型轉(zhuǎn)換符“()”對數(shù)據(jù)類型進行人為的強制轉(zhuǎn)換。
C5l編譯器除了能支持以上這些基本數(shù)據(jù)類型之外,還能支持一些復(fù)雜的組合型數(shù)據(jù)類型,如數(shù)組類型、指針類型、結(jié)構(gòu)類型、聯(lián)合類型等這些復(fù)雜的數(shù)據(jù)類型,在后面將相繼介紹。C51的運算量常量常量是指在程序執(zhí)行過程中其值不能改變的量。在C51中支持整型常量、浮點型常量、字符型常量和字符串型常量。一.整型常量整型常量也就是整型常數(shù),根據(jù)其值范圍在計算機中分配不同的字節(jié)數(shù)來存放。在C51中它可以表示成以下幾種形式:十進制整數(shù)。如234、-56、0等。十六進制整數(shù)。以0x開頭表示,如0x12表示十六進制數(shù)12H。長整數(shù)。在C51中當(dāng)一個整數(shù)的值達到長整型的范圍,則該數(shù)按長整型存放,在存儲器中占四個字節(jié),另外,如一個整數(shù)后面加一個字母L,這個數(shù)在存儲器中也按長整型存放。如123L在存儲器中占四個字節(jié)。C51的運算量二.浮點型常量浮點型常量也就是實型常數(shù)。有十進制表示形式和指數(shù)表示形式。十進制表示形式又稱定點表示形式,由數(shù)字和小數(shù)點組成。如0.123、34.645等都是十進制數(shù)表示形式的浮點型常量。指數(shù)表示形式為:[
]數(shù)字[.數(shù)字]e[]數(shù)字例如:123.456e-3、-3.123e2等都是指數(shù)形式的浮點型常量。C51的運算量三.字符型常量字符型常量是用單引號引起的字符,如‘a(chǎn)’、‘1’、‘F’等??梢允强娠@示的ASCII字符,也可以是不可顯示的控制字符。對不可顯示的控制字符須在前面加上反斜杠“\”組成轉(zhuǎn)義字符。利用它可以完成一些特殊功能和輸出時的格式控制。常用的轉(zhuǎn)義字符如下表所示。
C51的運算量轉(zhuǎn)義字符含義ASCII碼(十六進制數(shù))\o空字符(null)00H\n換行符(LF)0AH\r回車符(CR)0DH\t水平制表符(HT)09H\b退格符(BS)08H\f換頁符(FF)0CH\‘單引號27H\”雙引號22H\\反斜杠5CHC51的運算量四.字符串型常量字符串型常量由雙引號“”括起的字符組成。如“D”、“1234”、“ABCD”等。注意字符串常量與字符常量是不一樣,一個字符常量在計算機內(nèi)只用一個字節(jié)存放,而一個字符串常量在內(nèi)存中存放時不僅雙引號內(nèi)的字符一個占一個字節(jié),而且系統(tǒng)會自動的在后面加一個轉(zhuǎn)義字符“\o”作為字符串結(jié)束符。因此不要將字符常量和字符串常量混淆,如字符常量‘A’和字符串常量“A”是不一樣的。C51的運算量2.變量變量是在程序運行過程中其值可以改變的量。一個變量由兩部分組成:變量名和變量值。在C51中,變量在使用前必須對變量進行定義,指出變量的數(shù)據(jù)類型和存儲模式。以便編譯系統(tǒng)為它分配相應(yīng)的存儲單元。定義的格式如下:
[存儲種類]數(shù)據(jù)類型說明符[存儲器類型]變量名1[=初值],變量名2[初值]…;內(nèi)容引入一.?dāng)?shù)據(jù)類型說明符在定義變量時,必須通過數(shù)據(jù)類型說明符指明變量的數(shù)據(jù)類型,指明變量在存儲器中占用的字節(jié)數(shù)。可以是基本數(shù)據(jù)類型說明符,也可以是組合數(shù)據(jù)類型說明符,還可以是用typedef定義的類型別名。在C51中,為了增加程序的可讀性,允許用戶為系統(tǒng)固有的數(shù)據(jù)類型說明符用typedef起別名,格式如下:
typedefc51固有的數(shù)據(jù)類型說明符別名;定義別名后,就可以用別名代替數(shù)據(jù)類型說明符對變量進行定義。別名可以用大寫,也可以用小寫,為了區(qū)別一般用大寫字母表示?!纠縯ypedef的使用。typedefunsignedintWORD;typedefunsignedcharBYTE;BYTEa1=0x12;WORDa2=0x1234;C51的運算量二.變量名變量名是C51區(qū)分不同變量,為不同變量取的名稱。在C51中規(guī)定變量名可以由字母、數(shù)字和下劃線三種字符組成,且第一個字母必須為字母或下劃線。變量名有兩種:普通變量名和指針變量名。它們的區(qū)別是指針變量名前面要帶“*”號。C51的運算量三.存儲種類存儲種類是指變量在程序執(zhí)行過程中的作用范圍。C51變量的存儲種類有四種,分別是自動(auto)、外部(extern)、靜態(tài)(static)和寄存器(register)。1.Auto2.extern3.Static4.register存儲器類型存儲器類型描述data直接尋址的片內(nèi)RAM低128B,訪問速度快bdata片內(nèi)RAM的可位尋址區(qū)(20H~2FH),允許字節(jié)和位混合訪問idata間接尋址訪問的片內(nèi)RAM,允許訪問全部片內(nèi)RAMpdata用Ri間接訪問的片外RAM的低256Bxdata用DPTR間接訪問的片外RAM,允許訪問全部64k片外RAMcode程序存儲器ROM64k空間存儲器類型【例】變量定義存儲種類和存儲器類型相關(guān)情況。
chardatavarl;/*在片內(nèi)RAM低128B定義用直接尋址方式訪問的字符型變量var1*/intidatavar2;/*在片內(nèi)RAM256B定義用間接尋址方式訪問的整型變量var2*/autounsignedlongdatavar3;/*在片內(nèi)RAM128B定義用直接尋址方式訪問的自動無符號長整型變量var3*/externfloatxdatavar4;/*在片外RAM64KB空間定義用間接尋址方式訪問的外部實型變量var4*/intcodevar5;/*在ROM空間定義整型變量var5*/unsigncharbdatavar6;/*在片內(nèi)RAM位尋址區(qū)20H~2FH單元定義可字節(jié)處理和位處理的無符號字符型變量var6*/內(nèi)容引入五.特殊功能寄存器變量
MCS-51系列單片機片內(nèi)有許多特殊功能寄存器,通過這些特殊功能寄存器可以控制MCS-51系列單片機的定時器、計數(shù)器、串口、I/O及其它功能部件,每一個特殊功能寄存器在片內(nèi)RAM中都對應(yīng)于一個字節(jié)單元或兩個字節(jié)單元。在C51中,允許用戶對這些特殊功能寄存器進行訪問,訪問時須通過sfr或sfr16類型說明符進行定義,定義時須指明它們所對應(yīng)的片內(nèi)RAM單元的地址。格式如下:
sfr或sfr16特殊功能寄存器名=地址;
sfr用于對MCS-51單片機中單字節(jié)的特殊功能寄存器進行定義,sfr16用于對雙字節(jié)特殊功能寄存器進行定義。特殊功能寄存器名一般用大寫字母表示。地址一般用直接地址形式,具體特殊功能寄存器地址見前面內(nèi)容?!纠刻厥夤δ芗拇嫫鞯亩?/p>
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中兵勘察設(shè)計研究院有限公司2026校招備考題庫及完整答案詳解1套
- 六年級語文下冊期中測試卷及答案【完美版】
- 駕駛員承諾書
- 母嬰護理中的心理調(diào)適與情緒管理
- 陶俑介紹教學(xué)
- 職業(yè)健康體檢數(shù)據(jù)智能分析平臺
- 職業(yè)健康與職業(yè)康復(fù)的人才培養(yǎng)體系
- 銅仁2025年貴州銅仁市沿河縣事業(yè)單位引進人才17人筆試歷年參考題庫附帶答案詳解
- 鄭州2025年河南新密市紀(jì)委監(jiān)委選調(diào)16人筆試歷年參考題庫附帶答案詳解
- 蚌埠2025年安徽蚌埠市公安局招聘警務(wù)輔助人員400人(第二批次)筆試歷年參考題庫附帶答案詳解
- 2026年山東省威海市單招職業(yè)傾向性測試題庫附答案解析
- (一診)重慶市九龍坡區(qū)區(qū)2026屆高三學(xué)業(yè)質(zhì)量調(diào)研抽測(第一次)物理試題
- 2026新疆伊犁州新源縣總工會面向社會招聘工會社會工作者3人考試備考試題及答案解析
- 2026年榆能集團陜西精益化工有限公司招聘備考題庫完整答案詳解
- 2026廣東省環(huán)境科學(xué)研究院招聘專業(yè)技術(shù)人員16人筆試參考題庫及答案解析
- 2026年保安員理論考試題庫
- 2026年《必背60題》抖音本地生活BD經(jīng)理高頻面試題包含詳細(xì)解答
- 駱駝祥子劇本殺課件
- 2025首都文化科技集團有限公司招聘9人考試筆試備考題庫及答案解析
- 農(nóng)業(yè)科技合作協(xié)議2025
- 2025年人保保險業(yè)車險查勘定損人員崗位技能考試題及答案
評論
0/150
提交評論