找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 12161|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)內(nèi)部RAM的問題、STC單片機(jī)內(nèi)部擴(kuò)展RAM的應(yīng)用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71259 發(fā)表于 2014-12-29 23:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


STC89C52RC單片機(jī)的RAM有512字節(jié),然而這512字節(jié)怎么用呢?很多人可能都不知道,這可是極大的資源浪費(fèi)啊。RAM本來就寶貴,給
了這么多資源怎能不用呢?
  我們都知道8051單片機(jī)有128字節(jié)RAM,后來8052單片機(jī)擴(kuò)充到256字節(jié)RAM,然而在使用上是有區(qū)別的。
  在keil c默認(rèn)情況下編譯,
char a=0×00; a 會(huì)被存儲(chǔ)在低128字節(jié)的RAM里,這部分RAM稱為data
上述語句等效為:char data a=0×00;
那么如何使用高128字節(jié)的RAM呢,只要用 idata 關(guān)鍵詞就可以了:
char idata b=0×01; b 會(huì)被存放在全部256字節(jié)RAM的位置。
有人定義一個(gè)char a[120]數(shù)組時(shí),編譯會(huì)出錯(cuò),明明單片機(jī)有256字節(jié)RAM,為什么定義一個(gè)120元素的數(shù)組還不夠用呢?因?yàn)閏har c[120]等
同于char data c[120] ;數(shù)據(jù)都擠在低128字節(jié)的RAM里當(dāng)然不夠用。
char idata c[120] ;就不會(huì)有問題,數(shù)組會(huì)被分配在全部256字節(jié)的RAM中 SCT為了增強(qiáng)單片機(jī)的性能,STC89C**RC單片機(jī)擴(kuò)展了256字節(jié)的RAM,總共達(dá)到512字節(jié)。STC89C58RD+單片機(jī)擴(kuò)展了1024字節(jié)的RAM,總共達(dá)到1280字節(jié). 這些額外擴(kuò)展的RAM怎么用呢?很簡(jiǎn)單,只要用 xdata 關(guān)鍵詞就可以了。
STC89C**RC 單片機(jī)最大可以定義:char xdata d[256];
STC89C**RD+ 單片機(jī)最大可以定義:char xdata d[1024] ;
除了 data idata xdata 之外,還有一個(gè) bdata ,這個(gè)bdata 是什么呢?單片機(jī)低128字節(jié)的RAM里,還有一塊特殊的區(qū)域,地址是0×20–0x2F;
這16個(gè)字節(jié)是可以位尋址的,如果你需要定義的變量可以按位尋址,使用bdata 關(guān)鍵詞:
char bdata e=0xf7 ;變量e被分配在0×20–0x2F位尋址區(qū)域內(nèi)。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:71359 發(fā)表于 2014-12-30 12:30 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:135780 發(fā)表于 2016-12-25 00:34 | 只看該作者
如果是不需要修改的數(shù)組還可以用code定義到ROM中去
回復(fù)

使用道具 舉報(bào)

地板
ID:78835 發(fā)表于 2020-1-17 15:48 | 只看該作者
使用結(jié)構(gòu)體的話,能用xdata嗎?我試了,不會(huì)報(bào)錯(cuò),但是運(yùn)行不正常
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表