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

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1.1Franklin C-51數(shù)據(jù)類(lèi)型 Franklin C-51編譯器支持下列數(shù)據(jù)類(lèi)型:數(shù)據(jù)類(lèi)型長(zhǎng)度值域bit 1 字節(jié)0 或 1signed char1 字節(jié)-128~+127unsigned char1 字節(jié)0~255signed int2 字節(jié)-32768~+32867unsigned int2 字節(jié)0~65

1.1Franklin C-51數(shù)據(jù)類(lèi)型

Franklin C-51編譯器支持下列數(shù)據(jù)類(lèi)型:

數(shù)據(jù)類(lèi)型長(zhǎng)度值域

bit 1 字節(jié)0 或 1

signed char1 字節(jié)-128~+127

unsigned char1 字節(jié)0~255

signed int2 字節(jié)-32768~+32867

unsigned int2 字節(jié)0~65535

signed long4 字節(jié)-2147483648~+2147483647

unsigned long4 字節(jié)0~4294967295

float 4 字節(jié)±1.176E-38~±3.40E+38

指針 1~3 字節(jié)對(duì)象地址

sbit 1 位0 或 1

sfr 1 字節(jié)0~255

sfr16 2 字節(jié)0~65535

編譯的數(shù)據(jù)類(lèi)型(如結(jié)構(gòu))包含上表所列的數(shù)據(jù)類(lèi)型。由于8051系列是8位機(jī),因而不存在字節(jié)校準(zhǔn)問(wèn)題。這意味著數(shù)據(jù)結(jié)構(gòu)成員是順序放

置的。

數(shù)據(jù)類(lèi)型的轉(zhuǎn)換:當(dāng)計(jì)算結(jié)果隱含著另外一種數(shù)據(jù)類(lèi)型時(shí),數(shù)據(jù)類(lèi)型可以自動(dòng)進(jìn)行轉(zhuǎn)換,例如,將一個(gè)位變量賦給一個(gè)整型變量時(shí),位型

值自動(dòng)轉(zhuǎn)換為整型值,有符號(hào)變量的符號(hào)也能自動(dòng)進(jìn)行處理。這些轉(zhuǎn)換也可以用C語(yǔ)言的標(biāo)準(zhǔn)指令進(jìn)行人工轉(zhuǎn)換。

1.2 數(shù)據(jù)類(lèi)型的物理結(jié)構(gòu)

1.2.1 bit

“bit”類(lèi)型只有1位,不允許有位指針和位數(shù)組。位對(duì)象始終位于8051 CPU的可尋址RAM空間。如果程序控制流允許,L51將位對(duì)象交迭。

1.2.2signed/unsigned char;data/idata/pdata 指針

“char”類(lèi)型標(biāo)量和基于存貯器的“data/idata/pdata”指針具有1個(gè)字節(jié)長(zhǎng)度(8 bits)。

1.2.3signed/unsigned int/short;xdata/code 指針

“int”和“short”類(lèi)型標(biāo)量及指向xdata/code區(qū)域的指針具有2字節(jié)長(zhǎng)度(16

bits)。

整型值(或偏移)0x1234以下面方式保存在內(nèi)存中:

地址: +0 +1

內(nèi)容: 0x120x34

1.2.4signed/unsigned long

“l(fā)ong”類(lèi)型標(biāo)量長(zhǎng)為4個(gè)字節(jié)(32 bits),值0x12345678以下面方式放置:

地址: +0 +1 +2 +3

內(nèi)容: 0x12 0x34 0x56 0x78

1.2.5“一般”指針

“一般”指針包括3個(gè)字節(jié):2字節(jié)偏移和1字節(jié)存貯器類(lèi)型:

地址:+0 +1 +2

內(nèi)容: 存貯器類(lèi)型偏移高位 偏移低位

第一個(gè)字節(jié)代表了指針的存貯器類(lèi)型,存貯器類(lèi)型編碼如下:

存貯器類(lèi)型 IDATA XDATA PDATADATACODE

值 12 3 4 5

使用其它類(lèi)型值可能導(dǎo)致不可預(yù)測(cè)的程序動(dòng)作。

XDATA類(lèi)型的0x1234地址作為指針表示如下:

地址:+0+1 +2

內(nèi)容: 0x02 0x12 0x34

當(dāng)用常數(shù)作指針時(shí),必須注意正確定義存貯器類(lèi)型和偏移。下例將值0x41寫(xiě)入絕對(duì)地址為0x8000的外部數(shù)據(jù)存貯器:

#defineXBYTE ((char *)0x20000L)

XBYTE[0x8000]=0x41;

上例中用其它常數(shù)索引或索引變量也起作用。這樣,各種存貯器類(lèi)型的絕對(duì)地址可以一種非常有效的方式訪問(wèn)。但有一個(gè)例外,即

SFR。

注意:絕對(duì)地址定義為“l(fā)ong”型常量,低16位包含偏移,高8位表明了xdata類(lèi)型。為了表示這種指針,必須用長(zhǎng)整數(shù)來(lái)定義存貯器

類(lèi)型。

C51編譯器不檢查指針常數(shù),用戶必須選擇有實(shí)際意義的值。

1.2.6float

“float”類(lèi)型為4個(gè)字節(jié)(32位),使用的格式與IEEE-754標(biāo)準(zhǔn)(32位)具有24位精度,尾數(shù)的高位始終為“1”,因而不保存,位的分布如

下:

l 1位符號(hào)

l 8位指數(shù)位

l 23位尾數(shù)

符號(hào)位是最高位,尾數(shù)為最低的位,內(nèi)存中按字節(jié)存貯如下:

地址:+0 +1 +2+3

內(nèi)容:MMMM MMMM MMMM MMMME MMM MMMMS EEE EEEE

其中:S:符號(hào)位,1=負(fù),0=正

E:指數(shù)(在兩個(gè)字節(jié)中),偏移為127

M:23位尾數(shù),最高位“1”

浮點(diǎn)值——12.5的十六進(jìn)制為0xC1480000,它按下面方式存貯:

地址:+0+1+2+3

內(nèi)容: 0x00 0x00 0x48 0xc1

8051不包括捕獲浮點(diǎn)錯(cuò)誤(例外)的中斷向量。用戶軟件因此必須對(duì)錯(cuò)誤條件作出適當(dāng)反應(yīng)。下面推薦一種方法(也可以用其它可靠

辦法):“union”用來(lái)保存浮點(diǎn)值,這個(gè)“union”必須包括一個(gè)“float”和一個(gè)“unsigned long”,以根據(jù)IEEE對(duì)錯(cuò)誤作出響應(yīng)。除了通

常浮點(diǎn)值外,IEEE標(biāo)準(zhǔn)可能出錯(cuò)的條件以下面二進(jìn)制值表示,為檢查可能出現(xiàn)的計(jì)算錯(cuò)誤,可在計(jì)算后進(jìn)行檢查。因?yàn)楫?dāng)執(zhí)行一個(gè)運(yùn)算時(shí)考慮

了每個(gè)運(yùn)算符的錯(cuò)誤狀態(tài)并且該狀態(tài)被送到結(jié)果中。

NaN0xFFFFFFF不是一個(gè)數(shù)

+INF0x7F80000正無(wú)窮(正溢出)

-INF0XFF80000負(fù)無(wú)窮(負(fù)溢出)

1.3C-51 的擴(kuò)充定義

1.3.1特殊功能寄存器的聲明

MSC-51 系列包括多種寄存器,其中一些具有特殊功能,如定時(shí)器,端口的控制寄存器等,為了能夠直接訪問(wèn)這些寄存器,C51編譯器提供

了一種定義的自主形式,這是必要的,因?yàn)檫@些定義與標(biāo)準(zhǔn)C語(yǔ)言是不兼容的。

為了支持這些特殊功能寄存器(SFR)的聲明,引入了關(guān)鍵詞“sfr”,語(yǔ)法如下:

sfr-dcl:sfr sfr_name=int_constant

例:

sfr p0=0x80;

sfr p1=0x90;

必須注意的是“sfr”后不是一個(gè)地址而是一個(gè)名字。因此上例中名字P0和P1(port0和port1)定義為特殊功能寄存器并被賦予相應(yīng)

的絕對(duì)地址,名字可按意愿自由選取,源文件中不應(yīng)有先定義的sfr名字。

“=”號(hào)后的地址必須是常數(shù),不允許帶有運(yùn)算符的表達(dá)式,這個(gè)常數(shù)表達(dá)式必須在特殊功能寄存器的地址范圍內(nèi),位于0X80到0XFF

之間。

8051系列寄存器數(shù)量和類(lèi)型是極其不同的,因此建議將所有特別的“sfr”聲明放入一個(gè)頭文件,頭文件包括8051一些系列成員中的

SFR定義。進(jìn)一步的定義可由用戶用一文件編輯器產(chǎn)生。

1.3.2對(duì)SFR的16位數(shù)據(jù)訪問(wèn)

在新的8051系列產(chǎn)品中,SFR在功能上經(jīng)常組合為16位的,為了有效的訪問(wèn)這類(lèi)SFR,使用定義“sfr16”,當(dāng)“SFR”的高端直接位于低端

后時(shí),對(duì)SFR16位的訪問(wèn)是可能的。例如8052的定時(shí)器2就是這種情況,16位聲明的語(yǔ)法與“sfr”相同,SFR低地址部分必須作為sfr16的地址

例:sfr16 T2=0xCC /*Timer2:T2L=0CCH,T2H=0CDH */

sfr16 RCAP2=0xCA/*RCAP2L=0CAH,PCAP2H=0CBH */

本例中,T2(由T2L和T2H組成)和RCAP2(由RCAP2L和RCAP2H組成)被定義為16位SFR,即使在這種情況下,聲明中的名字后仍不是賦值語(yǔ)句,

而是一個(gè)SFR地址,高字節(jié)必須直接位于低字節(jié)之后,這種聲明適用于所有新的SFR,但不能用于Timer0和Timer1。

1.3.3SBIT:特殊功能位聲明

在典型的8051應(yīng)用問(wèn)題中,經(jīng)常需要單獨(dú)訪問(wèn)SFR中的位,C51擴(kuò)充功能使之成為可能,特殊位,象SFR一樣,不與標(biāo)準(zhǔn)C語(yǔ)言兼容,使用保留字

“sbit”可訪問(wèn)位尋址對(duì)象。與SFR聲明一樣,用保留字“sbit”聲明某些特殊位接受符號(hào)名,“=”后語(yǔ)句將絕對(duì)值地址賦給變量名,這種地

址分配有三種方法:

方法1:sfr_name^int_constant

當(dāng)字節(jié)是特殊功能寄存器的地址可用這個(gè)方法。sfr_name必須是已定義的SFR的名字,“^”后的語(yǔ)句定義了基地址上的特殊位的位置,該位置

必須是一個(gè)0~7的數(shù)。

例: sfr PSW=0xD0;

sfr LE=0xA8;

sbit OV=PSW^2;

sbit CY=PSW^7;

方法2:int_constant^int_constant

這種方法以一整常數(shù)作基地址,該值必須在0x80~0xFF之間,并能被8整除,確定位的位置方法同上。

例: sbit OV=0xD0^2;

sbit CV=0xD0^7;

sbit EA=0xA8^7;

方法3: int_constant

這種方法是將位的絕對(duì)地址賦給變量,地址必須位于0x80~0xFF之間。

例: sbit OV=0xD2;

sbit CY=0xD7;

sbit EA=0xAF;

特殊功能位代表了一個(gè)獨(dú)立的聲明類(lèi),它不能與其它聲明和位域互換。

1.3.4BIT:位標(biāo)量聲明

除了通常的C數(shù)據(jù)類(lèi)型外,C51編譯器支持“bit”數(shù)據(jù)類(lèi)型,對(duì)此有下列擴(kuò)充與限制:

(1)函數(shù)可包含類(lèi)型為“bit”的參數(shù),也可將其作為返回值。

bit bfunc(bit b0,bit b1){

/*……*/

return(b1);

}

注:使用禁止中斷(#pragma disable)或包含明確的寄存器組切換(using n)的函數(shù)不能返回位值,在這種情況下,編譯器會(huì)識(shí)別出來(lái)并產(chǎn)

生一個(gè)錯(cuò)誤信息。

(2)位標(biāo)量聲明的語(yǔ)法及C聲明的語(yǔ)義

sta

本站聲明: 本文章由作者或相關(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)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉