新聞中心

C51存儲類型

作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
C51存貯器類型
C51編譯器完全支持8051微處理器及其系列的結(jié)構(gòu),可完全訪問MCS-51硬件系統(tǒng)所有部分。每個變量可準(zhǔn)確地賦予不同的存貯器類型(data,idata,pdata,xdata,code)。訪問內(nèi)部數(shù)據(jù)存貯器(idata)要比訪問外部數(shù)據(jù)存貯器(xdata)相對要快一些,因此,可將經(jīng)常使用的變量置于內(nèi)部數(shù)據(jù)存貯器中,而將較大及很少使用的數(shù)據(jù)單元置于外部數(shù)據(jù)存貯器中。


存貯器類型

本文引用地址:http://butianyuan.cn/article/201611/315598.htm

描 述


data


直接尋址內(nèi)部數(shù)據(jù)存貯器,訪問變量速度最快(128bytes)


bdata


可位尋址內(nèi)部數(shù)據(jù)存貯器,允許位與字節(jié)混合訪問(16 bytes)


iIdata


間接尋址內(nèi)部數(shù)據(jù)存貯器,可訪問全部地址空間(256bytes)


pPdata


分頁(256bytes)外部數(shù)據(jù)存貯器,由操作碼MOVX @Ri訪問


xdata


外部數(shù)據(jù)存貯器(64K),由MOVX @DPTR訪問


code


代碼數(shù)據(jù)存貯器(64K),由MOVC @A+DPTR訪問


變量說明舉例:

data char charvar;

char code msg[]=”ENTER PARAMETER:”;

unsigned long xdata array[100];

float idata x,y,z;

unsigned char xdata vector[10][4][4];

sfr p0=0x80;

sbit RI="0x98";

char bdata flags;

sbit flago="flags"^0;

如果在變量說明時略去存貯器類型標(biāo)志符,編譯器會自動選擇默認(rèn)的存貯器類型。默認(rèn)的存貯器類型進(jìn)一步由控制指令SMALL、COMPACT和LARGE限制。例如:如果聲明char charvar,則默認(rèn)的存貯器模式為SMALL,charvar放在data存貯器;如果使用COMPACT模式,則charvar放入idata存貯區(qū);在使用LARGE模式的情況下,charvar被放入外部存貯區(qū)或xdata存貯區(qū)。
存貯器模式

存貯器模式?jīng)Q定了自動變量和默認(rèn)存貯器類型,參數(shù)傳遞區(qū)和無明確存貯區(qū)類型的說明。在固定的存貯器地址變量參數(shù)傳遞是C51的一個標(biāo)準(zhǔn)特征,在SMALL模式下參數(shù)傳遞是在內(nèi)部數(shù)據(jù)存貯區(qū)中完成的。LARGRE和COMPACT模式允許參數(shù)在外部存貯器中傳遞。C51同時也支持混合模式,例如在LARGE模式下生成的程序可將一些函數(shù)分頁放入SMALL模式中從而加快執(zhí)行速度。



存貯器模式


描 述


SMALL


參數(shù)及局部變量放入可直接尋址的內(nèi)部寄存器(最大128bytes,默認(rèn)存貯器類型是DATA)


COMAPCT


參數(shù)及局部變量放入分頁外內(nèi)部存貯區(qū)(最大256bytes,默認(rèn)存貯器類型是PDATA)


LARGE


參數(shù)及局部變量直接放入外部數(shù)據(jù)存貯器(最大64K,默認(rèn)存貯器類型是XDATA)


if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 45554; var cb_entryId = 1552895; var cb_blogApp = "papam"; var cb_blogUserGuid = "c3f8460b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = 2009/8/24 14:49:00;


關(guān)鍵詞: C51存儲類

評論


技術(shù)專區(qū)

關(guān)閉