久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4595|回復: 0
收起左側

51單片機內部RAM的使用

[復制鏈接]
ID:57234 發表于 2013-12-7 03:13 | 顯示全部樓層 |閱讀模式
今天還是一個人加班,梳理一下之前一直疑惑的幾個小問題吧。以一款51內核的STC89C52單片機作為說明,STC89C52具有8K字節Flash,512字節RAM,看門狗定時器等,其他資源不在今天討論主題之內,不再贅述。

先說說自己之前的誤區,以前提到片內RAM和片外RAM的時候,總是以為片內RAM就是52單片機512字節的RAM,片外RAM的擴展是很多經典單片機教材里都講述的,P0口是地址低八位兼數據總線,P2是地址高八位,當擴展RAM的時候,WR,RD,ALE,P0,P2怎么怎么接,巴拉巴拉。。。 但在此處,512字節的RAM并不是我原來認為的那樣全部是內部RAM,事實上,它的前256Byte是真正的片內RAM,而后256Byte是集成的片外RAM。 注意,它倆的訪問方式是有區別的。

下面進行說明:

typedef unsigned char uchar;
typedef unsigned int uint;
uchar i = 0;
uint j = 0;
uchar code table[] = {.....};
當時定義數據類型的時候,從來沒想到過idata,bdata,pdata,xdata這些關鍵字是干什么的。

              圖1.keil編譯結果
這也就導致了每次編譯完,總是會出現 xdata = 0 的字樣,當時自己竟然沒有深究它們是干什么的,更別說去看M51文件了。
另外,在keil的option->target的選項中,有一項Memory Model中有如下圖2的三種模式,也是自己沒注意過的。當然,這里也是與今天講的主題相關的。
                   圖2.keil編譯器設置

好,到此為止,大家應該明白了,idata,bdata,data,xdata,pdata這些關鍵字 以及 編譯器的相關選項都是與變量在內存中的分配有關系的。

1.片內256字節RAM已經足夠容納我們定義的所有變量,
一、當Memory Model選為small模式,這時,定義變量時,加不加idata,data這兩個關鍵字,都不影響變量存儲的位置(均存放在前256字節中)。但若這樣使用:
uchar xdata i = 0;

uchar pdata i = 0;
那么這個 i 便存放在了集成片外RAM中,xdata pdata存在讀取速度上的差別。
二、當Memory Model選為compact或large模式, 這時定義變量時,如果不加關鍵詞,即
uchar i = 0;
uint j = 0;
那么,i 與 j 是存放在集成片外RAM中的。此時,如果要將變量搬移到片內RAM,則要加關鍵字:
uchar idata i = 0;
uint idata j = 0;
或者
uchar data i = 0;
uint data j = 0;    //bdata支持位操作同時也將變量放在片內RAM

2.片內256字節RAM不夠用時,一般我們就直接使用compact 或 large 內存模式了。
此時,我們首先使用 bdata idata data這些關鍵字,將大部分變量放在片內RAM區,剩下的變量無論是否使用xdata pdata關鍵字,他們都會放入集成片外256字節的RAM中。
那讀者可能要問了,片內不夠用了,如果我還是將Memory Model定義為small模式呢? 是啊,這時會出現什么情況呢。 這時,如果合理使用bdata idata data xdata pdata這些關鍵字,也是可以按你的想法將變量分別放入片內RAM 和 集成片外RAM的。 有一個問題,當前256字節夠用 且 選擇small模式時,若沒對定義的變量進行初始化,則他們默認為零。但在這里,如果還不進行初始化,那么變量的值是隨機的,所以必須初始化。

最后,如果我有理解不對的地方,歡迎大家對以上提到的內容進行批評指正,大家交流中共同進步。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人一区二区三区久久久 | 天天草狠狠干 | 高清人人天天夜夜曰狠狠狠狠 | 欧美日韩一 | 成人国产精品 | 91中文字幕在线 | 国产99久久精品一区二区永久免费 | 久久91精品国产 | 国产在线第一页 | 丁香五月网久久综合 | 91成人在线视频 | 久久国产欧美日韩精品 | 黄色在线免费观看视频 | 日韩高清一区二区 | 国产欧美精品 | 狠狠干av | 99精品国产一区二区青青牛奶 | 二区中文字幕 | 亚洲成人网在线观看 | 成人99 | 男女视频免费 | 麻豆久久久9性大片 | 成人在线播放网站 | 欧美成人精品 | 中文一区 | 国产精品久久国产精品99 | 黄视频网址 | 精国产品一区二区三区 | 91久久国产| 中文字幕在线第二页 | 黄色毛片大全 | 亚洲综合在线视频 | 久久视频精品 | 免费人成在线观看网站 | 日韩高清成人 | 欧美精品一区二区三区在线播放 | 国产福利视频网站 | 在线看片国产精品 | 超碰3| 蜜桃精品噜噜噜成人av | 国产一级黄色网 |