日志档案

发表于 2008-1-11 15:39:47

1

标签: 51单片机  

谈一下51的RAM

之前有朋友老是出现RAM地址溢出,但他自己不知道是什么问题,因为他用的51是512的RAM,但他才不到400字节的,总是想不明白为什么不够用,这里说一下,其实是他的定义类型不对,他把所有变量定义成了DATA,才会导致这样。为什么呢?看看下面就知道了

data:
固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata:
固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式 访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)

xdata:
外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

不知道大家现在明白了没?超过256字节的就属于外部RAM了。有人说但我也没用外部RAM,手册里写的也是单片机本身就是512RAM,为什么是外部?其实超过256字节的RAM都是用技术集成在单片机里的,不是真正的内部RAM,必须要定义为XDATA才可以用。

系统分类: 单片机   |   用户分类: 51点滴   |   来源: 原创   |   【推荐给朋友】

    阅读(567)    回复(1)  

投一票您将和博主都有获奖机会!

  • xieweichao

    2008-1-29 9:18:04

    很多人都经常地址溢出,相信看了这应该知道是什么问题了,顶上去给大家看看