新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)中data,idata,xdata,pdata的區(qū)別

51單片機(jī)中data,idata,xdata,pdata的區(qū)別

作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
說(shuō)來(lái)慚愧,一直以來(lái),在學(xué)校也算是搞了不少東西,不過(guò)反而是51單片機(jī)這個(gè)基礎(chǔ)的東西沒有認(rèn)真去做過(guò),當(dāng)初剛自學(xué)51沒一個(gè)多星期呢,就轉(zhuǎn)到飛思卡爾16位單片機(jī)上去了,以至于51還沒透徹的弄個(gè)明白。

就不如我很清楚s12單片機(jī)什么片內(nèi)ram啊,flash大小啊,反而是51的不敢肯定的回答哦。

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

比如今天再次看到的這個(gè)問題,以前就看到過(guò),但因?yàn)橐恢辈辉趺锤銋R編程序,所以對(duì)51單片機(jī)中的dataidata、xdatapdata一直不清楚,不過(guò)今天不再脫了,決定一定弄清楚。

--------------------------------------------------------------------------------------------

再附上51片內(nèi)資源簡(jiǎn)介,再次記憶。

.8位CPU·4kbytes 程序存儲(chǔ)器(ROM) (52為8K)

·256bytes的數(shù)據(jù)存儲(chǔ)器(RAM) (52有384bytes的RAM)

·32條I/O口線·111條指令,大部分為單字節(jié)指令

·21個(gè)專用寄存器

·2個(gè)可編程定時(shí)/計(jì)數(shù)器·5個(gè)中斷源,2個(gè)優(yōu)先級(jí)(52有6個(gè))

·一個(gè)全雙工串行通信口

·外部數(shù)據(jù)存儲(chǔ)器尋址空間為64kB

·外部程序存儲(chǔ)器尋址空間為64kB

·邏輯操作位尋址功能·雙列直插40PinDIP封裝

·單一+5V電源供電

CPU:由運(yùn)算和控制邏輯組成,同時(shí)還包括中斷系統(tǒng)和部分外部特殊功能寄存器;

RAM:用以存放可以讀寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù);

ROM:用以存放程序、一些原始數(shù)據(jù)和表格;

I/O口:四個(gè)8位并行I/O口,既可用作輸入,也可用作輸出;

T/C:兩個(gè)定時(shí)/記數(shù)器,既可以工作在定時(shí)模式,也可以工作在記數(shù)模式;

五個(gè)中斷源的中斷控制系統(tǒng);

一個(gè)全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實(shí)現(xiàn)單片機(jī)之間或單片機(jī)與微機(jī)之間的串行通信;

片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,石英晶體和微調(diào)電容需要外接。最高振蕩頻率為12M。

--------------------------------------------------------------------------------------------

回到主題上來(lái),從數(shù)據(jù)存儲(chǔ)類型來(lái)說(shuō),8051系列有片內(nèi)、片外程序存儲(chǔ)器,片內(nèi)、片外數(shù)據(jù)存儲(chǔ)器,片內(nèi)程序存儲(chǔ)器還分直接尋址區(qū)和間接尋址類型,分別對(duì)應(yīng)code、data、xdata、idata以及根據(jù)51系列特點(diǎn)而設(shè)定的pdata類型,使用不同的存儲(chǔ)器,將使程序執(zhí)行效率不同,在編寫C51程序時(shí),最好指定變量的存儲(chǔ)類型,這樣將有利于提高程序執(zhí)行效率(此問題將在后面專門講述)。與ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各種不同的模式對(duì)應(yīng)不同的實(shí)際硬件系統(tǒng),也將有不同的編譯結(jié)果。

在51系列中data,idata,xdata,pdata的區(qū)別:

data:固定指前面0x00-0x7f的128個(gè)RAM,可以用acc直接讀寫的,速度最快,生成的代碼

也最小。

idata:固定指前面0x00-0xff的256個(gè)RAM,其中前128和data的128完全相同,只是因?yàn)樵L

問的方式不同。idata是用類似C中的指針方式訪問的。匯編中的語(yǔ)句為:

mox ACC,@Rx.(不重要的補(bǔ)充:c中idata做指針式的訪問效果很好)。

xdata:外部擴(kuò)展RAM,一般指外部0x0000-0xffff空間,用DPTR訪問。

pdata:外部擴(kuò)展RAM的低256個(gè)字節(jié),地址出現(xiàn)在A0-A7的上時(shí)讀寫,用movx ACC,@Rx

讀寫。這個(gè)比較特殊,而且C51好象有對(duì)此BUG,建議少用。但也有他的優(yōu)點(diǎn),具

體用法屬于中級(jí)問題,這里不提。



評(píng)論


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

關(guān)閉