51单片机RAM太小 编译不通过的问题

2020-01-20 19:04发布

本帖最后由 liude2006 于 2015-4-21 12:43 编辑

我在编译程序的时候提示*** ERROR L107: ADDRESS SPACE OVERFLOW,,,在网上看见解决方法是将Target中的Memory Model选项改成Compact或者Large型,,编译是通过了  但是测试时返回的数据不对 ,怎么解决?我去掉新加的一部分程序,还是用Compact或者Large型编译,返回的数据是错的,,用Small型编译,返回数据是对的      用的单片机型号是STC89C52RC 编译结果 Program Size: data=164.1 xdata=22 code=4093
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
qingaixww
1楼-- · 2020-01-21 15:39
优化代码,少用全局变量和静态变量,字符串放在flash,优化后还不行,就换大容量的芯片
dyjhy
2楼-- · 2020-01-21 15:42
 精彩回答 2  元偷偷看……
夏日么么茶
3楼-- · 2020-01-21 16:33
应该是你用的XDATA超过了,建议在变量前加关键字XDATA对超出的变量进行声明,模式选择small
takashiki
4楼-- · 2020-01-21 18:06
用的单片机型号是STC89C52RC 编译结果 Program Size: data=164.1 xdata=22 code=4093

STC89C52RC 没有XRAM,所以没有外扩XRAM时你的程序运行一定会出错。
另外,除去堆栈外,你的RAM总共只占用了164.1+22=186.1字节,超出了data区域128字节的范围,但是没有超出idata 256字节的区域。你可以将一部分变量前加上idata修饰后再编译。
liude2006
5楼-- · 2020-01-21 19:52
takashiki 发表于 2015-4-21 19:16
STC89C52RC 没有XRAM,所以没有外扩XRAM时你的程序运行一定会出错。
另外,除去堆栈外,你的RAM总共只占用 ...

正解,多谢
mybigapple
6楼-- · 2020-01-22 01:09
看看, 参考一下,有遇到此情况。

一周热门 更多>