找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4331|回復: 2
打印 上一主題 下一主題
收起左側

keil C51中各個地址的區(qū)別

[復制鏈接]
跳轉到指定樓層
樓主
ID:51090 發(fā)表于 2014-10-13 13:22 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
涉及操作系統(tǒng)堆棧處理的時候,必須對堆棧地址相當清晰,因此查閱了部分資料和網(wǎng)上論壇,發(fā)現(xiàn)在對keil中對C51的各個地址標號表示的很不清晰,現(xiàn)在做以下總結:



C:0x0000~C:0xFFFF     代表單片機的ROM地址,尋址空間為64KB,其中

C:0x0000~C:0x0FFF     是內建ROM空間,總共有4KB(比較一下電腦,論TB算,甚至還有PB什么的,這個差距,單片機你不要太精簡啊...)

C:0x1000~C:0xFFFF     是單片機的外部ROM尋址空間,一共60KB



X:0x000000~X:0x00FFFF 代表單片機外部的RAM地址,尋址空間為64KB



D:0x00~D:0xFF    是內建RAM空間,一共有256BYTE(注意,8051系列單片機只有128BYTE)(才256字節(jié),連1KB都不到。想想我們的電腦,現(xiàn)在的RAM都上升到GB了。)

I:0x00~I:0x00FF     是內建RAM空間,一共有256BYTE((注意,8051系列單片機只有128BYTE)(唉,這就是差距,這樣說來,給堆棧的空間也小得可憐了,還要扣掉0x00~0x2F這片被工作寄存器占用和位尋址占用的48字節(jié)地址,節(jié)約下來總共才只有208字節(jié),必須相當節(jié)省地去用了)





區(qū)別一下D和I,由于單片機的RAM在高128字節(jié)是雙映射即在0x80~0xFF這片地址中,特殊寄存器與RAM空間地址是重合的,對于這個設計我也感到相當費解,難道是要節(jié)約空間么?

因此,在單片機調用程序讀取數(shù)據(jù)的時候,使用I:0xXX作為RAM的地址,使用D:0xXX作為特殊寄存器的地址。除此之外,二者的功能是一樣的,尋址的RAM空間相同。

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

使用道具 舉報

板凳
ID:67281 發(fā)表于 2014-10-14 08:48 | 只看該作者
學習了,,,,,
回復

使用道具 舉報

沙發(fā)
ID:61875 發(fā)表于 2014-10-14 08:12 | 只看該作者
謝謝樓主的奉獻。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表