keil 51中编译显示address space overlow怎么解决??

如题所述

地址空间溢出了,一般是RAM不够的表现。
因为不知道你程序的具体情况,所以我这里就说几个常见现象:
1、MCU的规格不够,象AT89S51是128RAM,52是256RAM,但这其中还包括了特殊寄存器,51实际也就能用80字节,这80个还要包括堆栈,所以写嵌入式程序,RAM使用一定要精打细算。
2、能用局部变量就不定义全局的,能用位变量的就不用字节变量。
3、如果有外部RAM,就尽量把对速度要求不高的变量定义在里面,但也要注意不超过其限量。
4、不用的函数就注释掉,如果实在不想注释,就象这样,也可以减少RAM的使用:
i=0;
if(i==1)
{
...
xxx();//从不调用的函数
...
}
5、尽量减少函数调用的级数
6、在项目的OPTION-》target中,memory model,根据具体硬件做选择。
温馨提示:内容为网友见解,仅供参考
无其他回答

*** ERROR L107: ADDRESS SPACE OVERFLOW
解决方案:1.右键单击Target选择“Options for Target'Target1'”就会出来一个框,在memory model中选择compact:variables in pdata 就可以了。“Keil Cx51编译器提供三条编译模式控制命令:SMALL,COMPACT,LARGE,它们对变量存储器空间的影响如下。SMALL:所有变量都被定义在8051单片机的片内RAM中,对这种变...

keil编译时出现address space overflow错误
应该改成 void delay(uchar i){ uchar m,n;for(;i>0;i--){ for(m=100;m>0;--m)for(n=100;n>0;--n);} } 这样才行。若i<0,这一开始就不会进入for循环。。所以没延迟效果,另外,m、n不赋初值,那for的嵌套语句就没效果,所以应该给m、n赋值。至于--m跟m--,其实在某些情况...

KEIL C51出现的问题 到底是什么情况 老是提示地址空间溢出
解决的办法有两种,一是通过更改Memory Model设置,可以设置成pdata或xdata,以便有足够大的空间,但这又带来新的问题,程序运行速度减慢,而且code代码也会加大,因为如果一个局部变量被存放在了xdata空间,汇编语言访问xdata空间的代码大小要比访问data空间的代码大,变量一旦很多,程序的代码也会逐渐增大;...

*** ERROR L107: ADDRESS SPACE OVERFLOW 各位大神请帮一下 为什么keil...
你如果直接使用printf("test");应该不会报错的.

8051单片机(使用keil c51编译)出现好多警告 各种不会呀。。。
注意是先声明,后调用,如果你写在主函数前面就不用声明了,出多警告,说明有的定义参量没有用上,这时经常会出现警告,注意,在用什么参量时才定义,定义多没好处,程序写得要明确。

keil51提示data空间不足,编译失败,只是调用了一个函数。
Target里面选择变量默认在xdata中就可以了!或者手动给一些变量加上xdata修饰符!

keil编译错误 密码锁 L104 L105 L17 L105 L118
ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?DT?002 LENGTH: 002CH ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT SYMBOL: BUFFER SEGMENT: ?DT?002 ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT SYMBOL: DSY_BUFFER1 SEGMENT: ?DT?002 ERROR L105: PUBLIC REFERS TO ...

keil编译无法通过 警告看不懂,求帮助
你这程序错误很多,这种情况用不着看这些提示,何况你又看不懂。还是重新查一下程序,后写的子函数后,不能编译了,那就逐个查子函数,可以先全部注释掉,再一个一个恢复,每恢复一个编译一下,就知是哪个子函数有错了。

keil 编译出错。 *** ERROR L120: CONTENT BELONGS TO ERRONEOUS SEGMEN...
我晕,怎么这么多,地址空间溢出,Program Size: data=110.3 xdata=0 code=4133 Target not created,你的Keil不是完整版的,所以只能编译小于2KB的程序,可能你的程序太大了,去网上下载一个完整版的Keil吧,卸载原来的Keil再重装一下试试~~~

请问Keil编译文件出现如下显示,不能生成hex文件(运行没有警告和错误)怎...
这里已经表述得清楚明白……你当前使用的是未和谐的评估版,仅支持编译不超过2kB(800h)的程序,而目前这个程序编译之后的长度是4859字节,是限制的2.37倍。同时,变量太多已经超过了直接寻址的80h范围,你需要把一部分变量分配到间接寻址的 idata 区。

相似回答