keil c报错:*** ERROR L107: ADDRESS SPACE OVERFLOW

【ADDRESS SPACE OVERFLOW】

//----AT89C52-----//

地址空间溢出,简而言之就是RAM空间不够用,通常是由于全局变量过多引起:

解决方法一:
在部分变量定义时加上 [idata]。(系统默认寻址是0-128字节直接寻址区,加上 idata后可增加128-256的间接寻址区)

解决方法二:
在部分只读变量定义时增加关键字[code]

解决方法三:(慎)
在部分变量定义时添加关键字[xdata],需要注意的是这个区域的数据不稳定,在一些需要经常改变的变量中用此关键词定义可能出现程序异常。

解决方法四:
减少全局变量或其大小,可通过减少全局变量,将int型变量在允许情况下改成char型,或把char型改成bit型,以减少全局变量所占空间。

注:------------
网上有人说可通过更改keil所用模式来解决,即可将<small>改为<compact>、<large>来解决,但自己试了下发现程序没有任何变化,所以这种方法觉得待验证,当然也有可能是自己错了,也欢迎大家指正。

永不止步步 发表于10-24 10:03 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:382741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号