![單片機(jī)C語言數(shù)據(jù)類型_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/294820f9-2ccf-4387-b97a-696a5fdb4045/294820f9-2ccf-4387-b97a-696a5fdb40451.gif)
![單片機(jī)C語言數(shù)據(jù)類型_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/294820f9-2ccf-4387-b97a-696a5fdb4045/294820f9-2ccf-4387-b97a-696a5fdb40452.gif)
![單片機(jī)C語言數(shù)據(jù)類型_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/5/294820f9-2ccf-4387-b97a-696a5fdb4045/294820f9-2ccf-4387-b97a-696a5fdb40453.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上單片機(jī)C語言的數(shù)據(jù)類型在最小系統(tǒng)的介紹中,我們已經(jīng)大致了解了單片機(jī)的程序結(jié)構(gòu),下面我們來系統(tǒng)介紹一下。先來簡單說說C語言的標(biāo)識符和關(guān)鍵字。標(biāo)識符是用來標(biāo)識源程序中某個對象的名字的,這些對象可以是語句、數(shù)據(jù)類型、函數(shù)、變量、數(shù)組等等。C語言是大小字敏感的一種高級語言,如果我們要定義一個定時器1,可以寫做“Timer1”,如果程序中有“TIMER1”,那么這兩個是完全不同定義的標(biāo)識符。標(biāo)識符由字符串,數(shù)字和下劃線等組成,注意的是第一個字符必須是字母或下劃線,如“1Timer”是錯誤的,編譯時便會有錯誤提示。有些編譯系統(tǒng)專用的標(biāo)識符是以下劃線開頭,所以一般不要以下劃線開頭命
2、名標(biāo)識符。標(biāo)識符在命名時應(yīng)當(dāng)簡單,含義清晰,這樣有助于閱讀理解程序。在C51編譯器中,只支持標(biāo)識符的前32位為有效標(biāo)識,一般情況下也足夠用了。關(guān)鍵字則是編程語言保留的特殊標(biāo)識符,它們具有固定名稱和含義,在程序編寫中不允許標(biāo)識符與關(guān)鍵字相同。在KEIL uVision2中的關(guān)鍵字除了有ANSI C標(biāo)準(zhǔn)的32個關(guān)鍵字外還根據(jù)51單片機(jī)的特點(diǎn)擴(kuò)展了相關(guān)的關(guān)鍵字(比如for,if,while等標(biāo)準(zhǔn)的還有sbit,code,interrupt等擴(kuò)展的,具體列表可以在網(wǎng)上查到)。其實(shí)在KEIL uVision2的文本編輯器中編寫C程序,系統(tǒng)可以把保留字以不同顏色顯示,缺省顏色為天藍(lán)色。在標(biāo)準(zhǔn)C語言中基本的
3、數(shù)據(jù)類型為char,int,short,long,float 和double,而在C51編譯器中int和short相同,float和double相同,這里就不列出說明了。1 char 字符類型char類型的長度是一個字節(jié),通常用于定義處理字符數(shù)據(jù)的變量或常量。分無符號字符類型unsigned char和有符號字符類型signed char,默認(rèn)值為signed char類型。unsigned char類型用字節(jié)中所有的位來表示數(shù)值,所可以表達(dá)的數(shù)值范圍是0255。signed char類型用字節(jié)中最高位字節(jié)表示數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負(fù)數(shù),負(fù)數(shù)用補(bǔ)碼表示。所能表示的數(shù)值范圍是-1
4、28+127。unsigned char常用于處理ASCII字符或用于處理小于或等于255的整型數(shù)。正數(shù)的補(bǔ)碼與原碼相同,負(fù)二進(jìn)制數(shù)的補(bǔ)碼等于它的絕對值按位取反后加1。2 int 整型int整型長度為兩個字節(jié),用于存放一個雙字節(jié)數(shù)據(jù)。分有符號int整型數(shù)signed int和無符號整型數(shù)unsigned int,默認(rèn)值為signed int類型。signed int表示的數(shù)值范圍是-32768+32767,字節(jié)中最高位表示數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負(fù)數(shù)。unsigned int表示的數(shù)值范圍是065535。3 long 長整型long長整型長度為四個字節(jié),用于存放一個四字節(jié)數(shù)據(jù)。分
5、有符號long長整型signed long和無符號長整型unsigned long,默認(rèn)值為signed long類型。signed int表示的數(shù)值范圍是-+,字節(jié)中最高位表示數(shù)據(jù)的符號,“0”表示正數(shù),“1”表示負(fù)數(shù)。unsigned long表示的數(shù)值范圍是0。4 float 浮點(diǎn)型float浮點(diǎn)型在十進(jìn)制中具有7位有效數(shù)字,是符合IEEE754標(biāo)準(zhǔn)的單精度浮點(diǎn)型數(shù)據(jù),占用四個字節(jié)。因浮點(diǎn)數(shù)的結(jié)構(gòu)較復(fù)雜在以后再做詳細(xì)的討論。5 * 指針型指針型本身就是一個變量,在這個變量中存放的指向另一個數(shù)據(jù)的地址。這個指針變量要占據(jù)一定的內(nèi)存單元,對不同的處理器長度也不盡相同,在C51中它的長度一般為
6、13個字節(jié)。指針變量也具有類型,在以后專門探討。6 bit 位標(biāo)量bit位標(biāo)量是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可定義一個位標(biāo)量,但不能定義位指針,也不能定義位數(shù)組。它的值是一個二進(jìn)制位,不是0就是1,類似一些高級語言中的Boolean類型中的True和False。7 sfr 特殊功能寄存器sfr也是一種擴(kuò)充數(shù)據(jù)類型,點(diǎn)用一個內(nèi)存單元,值域?yàn)?255。利用它可以訪問51單片機(jī)內(nèi)部的所有特殊功能寄存器。如用sfr P1 = 0x90 這一句定P1為P1端口在片內(nèi)的寄存器,在后面的語句中我們用以用P1 = 255(對P1端口的所有引腳置高電平)之類的語句來操作特殊功能寄存器。8 sfr16
7、16位特殊功能寄存器sfr16占用兩個內(nèi)存單元,值域?yàn)?65535。sfr16和sfr一樣用于操作特殊功能寄存器,所不同的是它用于操作占兩個字節(jié)的寄存器,如定時器T0和T1。9 sbit 可錄址位sbit是C51中的一種擴(kuò)充數(shù)據(jù)類型,利用它可以訪問芯片內(nèi)部的RAM中的可尋址位或特殊功能寄存器中的可尋址位。如先前我們定義了sfr P1 = 0x90; ,因P1端口的寄存器是可位尋址的,所以我們可以定義sbit P1_1 = P11; ,意思是定義P1_1 為P1中的P1.1引腳。同樣我們可以用P1.1的地址去寫,如sbit P1_1 = 0x91; ,這樣我們在以后的程序語句中就可以用P1_1來
8、對P1.1引腳進(jìn)行讀寫操作了。通常這些可以直接使用系統(tǒng)提供的預(yù)處理文件(如reg51.h,AT89X51.h),里面已定義好各特殊功能寄存器的簡單名字,直接引用可以省去一點(diǎn)時間,當(dāng)然你也可以自己寫自己的定義文件,用你認(rèn)為好記的名字。以上就是Keil 51中常用的數(shù)據(jù)類型,下面我們來看一個跑馬燈的程序,加深了解一下C51的程序結(jié)構(gòu)。#include <AT89X51.H> /預(yù)處理文件里面定義了特殊寄存器的名稱,如P1口定義為P1void main(void)/定義花樣數(shù)據(jù)const unsigned char design32=0xFF, 0xFE, 0xFD, 0xFB, 0xF
9、7, 0xEF, 0xDF, 0xBF, 0x7F, 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x0, 0xE7, 0xDB, 0xBD, 0x7E, 0xFF ;unsigned int a; /定義循環(huán)用的變量unsigned char b; /在C51編程中因內(nèi)存有限盡可能注意變量類型的使用盡可能使用少字節(jié)的類型,在大型的程序中很受用dofor (b=0; b<32; b+)for(a=0; a<30000; a+
10、); /延時一段時間P1 = designb; /讀已定義的花樣數(shù)據(jù)并寫花樣數(shù)據(jù)到P1口while(1);對應(yīng)硬件電路圖如下:程序中的花樣數(shù)據(jù)可以自以去定義,因這里我們的LED要AT89C51的P1引腳為低電平才會點(diǎn)亮,所以我們要向P1口的各引腳寫數(shù)據(jù)0,對應(yīng)連接的LED才會被點(diǎn)亮,P1口的八個引腳剛好對應(yīng)P1口特殊寄存器的八個二進(jìn)位,如向P1口定數(shù)據(jù)0xFE,轉(zhuǎn)成二進(jìn)制就是,最低位D0為0,這里P1.0引腳輸出低電平,LED1被點(diǎn)亮。如此類推,大家不難算出自己想要做的效果了。大家編譯燒寫看看,效果就出來,顯示的速度您可以根據(jù)需要調(diào)整延時a的值,不要超過變量類型的值域就行了。如果你還沒有開發(fā)板
11、,或者連最小系統(tǒng)板也沒自己焊一塊,也沒關(guān)系,還記得Keil的I/O口仿真功能嗎?看看這里就知道該怎么辦了?;氐匠绦蛑衼恚谝痪涞?include跟C語言里面的引用是一樣的,這個頭文件包含了程序中沒有聲明的變量P1,所以P1可以直接使用不會出錯啦。接下來程序直接跳轉(zhuǎn)到main函數(shù)執(zhí)行,do-while循環(huán)保證單片機(jī)一直循環(huán)工作。下面我們把程序換一種方式寫,以加深對寄存器的理解。sfr P1 = 0x90; /這里沒有使用預(yù)定義文件,而是自己定義特殊寄存器,之前我們使用的預(yù)定義文件其實(shí)就是這個作用sbit P1_0 = P10;sbit P1_7 = 0x907;sbit P1_1 = 0x91; /這里分別定義P1端口和P10,P11,P17引腳void main(void)unsigned int a;unsigned char b;dofor (a=0;a<50000;a+)P1_0 = 0; /點(diǎn)亮P1_0for (a=0;a<50000;a+)P1_7 = 0; /點(diǎn)亮P1_7for (b=0;b<255;b+)for (a=0;a<10000;a+)P1 = b; /用b的值來做跑馬燈的花樣P1 = 255; /熄滅P1上的LEDfor (
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2027年中國GPS導(dǎo)航儀行業(yè)市場調(diào)查研究及發(fā)展戰(zhàn)略研究報(bào)告
- 環(huán)保罰款減免申請書
- 知識產(chǎn)權(quán)交易的稅務(wù)籌劃與合規(guī)
- 導(dǎo)熱油爐改造濰坊三力本諾化學(xué)工業(yè)下營報(bào)告表全文下載鴨毛告
- 基于多源遙感的近20多年南四湖菹草生物量時空特征研究
- 2020-2025年中國熱敏紙票證印刷行業(yè)競爭格局分析及投資規(guī)劃研究報(bào)告
- 抗體的抗原結(jié)合區(qū)域分析、預(yù)測和軟件開發(fā)
- HT公司基于精益的新產(chǎn)品量產(chǎn)方案開發(fā)改善
- 年產(chǎn)3萬套汽車零部件生產(chǎn)項(xiàng)目可行性研究報(bào)告申請建議書
- 人體腸道噬菌體組的分布特征及其與細(xì)菌組的關(guān)聯(lián)研究
- DL∕T 5452-2012 變電工程初步設(shè)計(jì)內(nèi)容深度規(guī)定
- 2024至2030年中國中檔商務(wù)酒店連鎖行業(yè)市場調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 血栓性微血管病的診治
- 綜合客運(yùn)樞紐換乘區(qū)域設(shè)施設(shè)備配置要求JTT1066-2016
- 人工智能產(chǎn)業(yè)分類目錄
- 中國急性缺血性卒中診治指南(2023)解讀
- 一年級下冊寫字表練字帖
- 青島版小學(xué)數(shù)學(xué)三年級上冊《分?jǐn)?shù)的初步認(rèn)識》教學(xué)案例
- 2024PowerTitan系列運(yùn)維指導(dǎo)儲能系統(tǒng)運(yùn)維指導(dǎo)
- 2024年成都溫江興蓉西城市運(yùn)營集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 患者發(fā)生輸液反應(yīng)的應(yīng)急預(yù)案
評論
0/150
提交評論