救救啊,怎么DATE区会益处那

[复制链接]
2855|11
 楼主| whj_1984 发表于 2007-12-6 16:44 | 显示全部楼层 |阅读模式
TE, AC, space, ce, hp
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA    
    SEGMENT: _DATA_GROUP_
    LENGTH:  0036H

Program Size: data=145.0 xdata=144 code=3826
LINK/LOCATE RUN COMPLETE.  0 WARNING(S),  1 ERROR(S)

怎么会出现这样的问题那?望各位大虾救救啊
mohanwei 发表于 2007-12-6 16:49 | 显示全部楼层

data区没这么大吧?

如果有扩展ram,不重要的都放到xdata区好了。

如果ram羞涩,把部分挪到pdata区也可以
xwj 发表于 2007-12-6 16:53 | 显示全部楼层

单片机内存宝贵,尽量节约使用啊

xwj 发表于 2007-12-6 17:00 | 显示全部楼层

data区溢出时,片内RAM还可以使用idata呢

data区是直接寻址的低128字节,对于8x52以上的,还有128字节间接寻址的高位片内RAM呢,
LZ应该养成个习惯:把数组都用idata来声明,反正数组都是要间接寻址的嘛


PS:
LZ,不知道你的程序要干什么,那么点程序量分配了那么多RAM,自己研究研究怎么节约使用啊

如果真的非要这么多RAM,了马参照我的贴和2楼的贴,把数组用idata声明,把对速度没要求的变量放XRAM里,用pdata或xdata 声明
 楼主| whj_1984 发表于 2007-12-6 17:36 | 显示全部楼层

回复楼上的几位

是在做个USB通信的固件,我把无关紧要的数据都放到XDATA中了,DATA区是255个字节啊,我就是搞不懂为什么会出现那个错误提示
ayb_ice 发表于 2007-12-6 18:11 | 显示全部楼层
mohanwei 发表于 2007-12-7 14:31 | 显示全部楼层

我在2楼打错了,那个pdata应该改成idata

关于这个内存分配范围,你最好看看C51编译器手册,里面讲的很详细的
huangqi412 发表于 2007-12-7 18:12 | 显示全部楼层

code=3826 怎么ram用了这么多啊?

xwj 发表于 2007-12-7 19:25 | 显示全部楼层

LZ,怎么里还没明白? data区是128字节!

高128字节片内寻址指令访问的是特殊功能寄存器,而要访问RAM必须用idata声明或通过堆栈访问

idata区是256字节,不过data区128字节也包含在里面
data区只有128字节,还包括4组R0~R7的寄存器。
cooperate 发表于 2007-12-8 11:11 | 显示全部楼层

支持xwj

将程序中的数组或其它占用RAM比较多的变量换成idata类型应该就OK了
jimoom 发表于 2007-12-8 19:03 | 显示全部楼层

date区只有128字节

_DATA_GROUP_为存放局部变量的ram,按照ls的方法,为_DATA_GROUP_留出更大的空间。
zusen 发表于 2007-12-8 19:14 | 显示全部楼层

唉,用汇编写嘛

一目了然
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部