www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]單片機(jī)C51語(yǔ)言兼?zhèn)涓呒?jí)語(yǔ)言與低級(jí)語(yǔ)言的優(yōu)點(diǎn)。語(yǔ)法結(jié)構(gòu)和標(biāo)準(zhǔn)C語(yǔ)言基本一致,語(yǔ)言簡(jiǎn)潔,便于學(xué)習(xí)。運(yùn)行于單片機(jī)平臺(tái),支持的微處理器種類(lèi)繁多,可移植性好。對(duì)于兼容的8051系列單片機(jī),只要將一個(gè)硬件型號(hào)下的程序稍加修改,甚至不加改變,就可移植到另一個(gè)不同型號(hào)的單片機(jī)中運(yùn)行。具有高級(jí)語(yǔ)言的特點(diǎn),盡量減少底層硬件寄存器的操作。單片機(jī)C51語(yǔ)言提供了完備的數(shù)據(jù)類(lèi)型、運(yùn)算符及函數(shù)供使用。C51語(yǔ)言是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,可以使用一對(duì)花括號(hào)“{}”將一系列語(yǔ)句組合成一個(gè)復(fù)合語(yǔ)句,程序結(jié)構(gòu)清晰明了。C51語(yǔ)言代碼執(zhí)行的效率方面十分接近匯編語(yǔ)言,且比匯編語(yǔ)言的程序易于理解,便于代碼共享。

數(shù)據(jù)是程序處理的基本對(duì)象,數(shù)據(jù)類(lèi)型決定了數(shù)據(jù)在存儲(chǔ)器中的存放方式。正確掌握數(shù)據(jù)類(lèi)型是學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言的基礎(chǔ)。

單片機(jī)C51語(yǔ)言兼?zhèn)涓呒?jí)語(yǔ)言與低級(jí)語(yǔ)言的優(yōu)點(diǎn)。語(yǔ)法結(jié)構(gòu)和標(biāo)準(zhǔn)C語(yǔ)言基本一致,語(yǔ)言簡(jiǎn)潔,便于學(xué)習(xí)。運(yùn)行于單片機(jī)平臺(tái),支持的微處理器種類(lèi)繁多,可移植性好。對(duì)于兼容的8051系列單片機(jī),只要將一個(gè)硬件型號(hào)下的程序稍加修改,甚至不加改變,就可移植到另一個(gè)不同型號(hào)的單片機(jī)中運(yùn)行。具有高級(jí)語(yǔ)言的特點(diǎn),盡量減少底層硬件寄存器的操作。單片機(jī)C51語(yǔ)言提供了完備的數(shù)據(jù)類(lèi)型、運(yùn)算符及函數(shù)供使用。C51語(yǔ)言是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,可以使用一對(duì)花括號(hào)“{}”將一系列語(yǔ)句組合成一個(gè)復(fù)合語(yǔ)句,程序結(jié)構(gòu)清晰明了。C51語(yǔ)言代碼執(zhí)行的效率方面十分接近匯編語(yǔ)言,且比匯編語(yǔ)言的程序易于理解,便于代碼共享。

C51語(yǔ)言中常用的數(shù)據(jù)類(lèi)型見(jiàn)表8-1。下面簡(jiǎn)要介紹表8-1中各數(shù)據(jù)類(lèi)型的使用方法。

1.bit位型

bit可以定義位變量,但是不能定義位指針變量和位數(shù)組。如,“bit a;”是正確的,而

“bit*z;”和“bit z[2];”是錯(cuò)誤的。

2.char字符型

signed char和unsigned char均用于字符型變量定義,前者定義有符號(hào)數(shù),后者定義無(wú)符號(hào)數(shù)。無(wú)符號(hào)數(shù)不能為負(fù)數(shù),若將負(fù)數(shù)賦值給無(wú)符號(hào)數(shù),則該負(fù)數(shù)將被轉(zhuǎn)換成其補(bǔ)碼所對(duì)應(yīng)的無(wú)符號(hào)數(shù)。如,指令“unsigned char x=-1;”使x的實(shí)際值為255(255是-1的8位補(bǔ)碼)。

3.int整型

signed short int和unsigned short int均用于整型變量定義,前者定義有符號(hào)數(shù),后者定義無(wú)符號(hào)數(shù)。另外,signed short int和unsigned short int可分別簡(jiǎn)寫(xiě)為signed int和unsigned int。

4.long長(zhǎng)整型

signed long int和unsigned long int均用于長(zhǎng)整型變量定義,前者定義有符號(hào)數(shù),后者定義無(wú)符號(hào)數(shù)。

5.浮點(diǎn)型

float和double型變量都是浮點(diǎn)型變量,這兩種變量類(lèi)型完全等價(jià),其取值范圍和位數(shù)等完全相同。這與PC的C語(yǔ)言不同,在PC的C語(yǔ)言中,float型變量和double型變量的取值范圍和位數(shù)等均不同。

6.指針型

*可以加在字符型、整型、長(zhǎng)整型和浮點(diǎn)型變量定義之前,從而形成相應(yīng)類(lèi)型的指針型變量。如,指令“char*x;”定義char型的指針變量x。指針型變量中存放存儲(chǔ)器或特殊功能寄存器的地址,通過(guò)該地址可以訪問(wèn)存儲(chǔ)器或特殊功能寄存器中存放的數(shù)據(jù)。

7.可尋址位

sbit用于定義單片機(jī)特殊功能寄存器中可尋址的位。例如,指令“sbit f=P2^1;”定義的變量f被初始化為特殊功能寄存器P2的第1位。嚴(yán)格來(lái)說(shuō),sbit并不是變量定義,而只是給特殊功能寄存器的可尋址位賦予一個(gè)別名而已。

需要注意的是,因?yàn)閟bit定義的變量來(lái)自于特殊功能寄存器,所以sbit型變量的位地址必須在0x80~0xFF范圍內(nèi),即特殊功能寄存器區(qū)的位地址范圍。例如,指令“sbit A_0=0xe0;”為累加器A的最低位定義了位變量A_0,指令“A_0=1;”將累加器A的最低位設(shè)置為1;而指令“sbit somebit=0x7f;”是錯(cuò)誤的,因?yàn)?x7f作為一個(gè)位地址不在特殊功能寄存器區(qū)的位地址范圍內(nèi)。

另外,補(bǔ)充說(shuō)明:在C51語(yǔ)言中,十六進(jìn)制需以“0X”或“0x”開(kāi)頭,且數(shù)字末尾不加字母“H”或“h”。

8.特殊功能寄存器

Sfr可定義特殊功能寄存器變量。嚴(yán)格來(lái)說(shuō),sfr并未定義變量,而僅是給單片機(jī)的特殊功能寄存器賦予一個(gè)別名。例如,指令“sfr W=0x80;”將特殊功能寄存器P0的地址賦予變量W,之后,變量W與P0等價(jià)。需要注意的是,sfr定義中出現(xiàn)的地址只能是特殊功能寄存器的地址。

9.16位特殊功能寄存器

sfr16用于定義16位特殊功能寄存器變量。例如,指令“sfr16 Time=0x8C;”定義了16位的特殊功能寄存器變量Time,該變量由字節(jié)地址為0x8C和0x8C+1的兩個(gè)8位特殊功能寄存器拼接而成,其中,字節(jié)地址為0x8C的TH0為T(mén)ime的低8位,字節(jié)地址為0x8D的TH1為T(mén)ime的高8位。

這里需要特別說(shuō)明的是,為了方便用戶(hù)使用特殊功能寄存器,Keil C51編譯器預(yù)定義了一些sbit、sfr和sfr16變量,如:P0是預(yù)定義的sfr型變量,并且已經(jīng)在頭文件“reg51.h”中進(jìn)行了定義,若需在程序中使用這些預(yù)定義的變量,僅需在程序中加入“#include”即可。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀
關(guān)閉