ERROR L107: ADDRESS SPACE OVERFLOW keil错误的解决方法
·
今天遇到一个keil问题,编译出现下面提示:最后完美解决,把方法分享给51hei论坛的朋友们
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?_WRITEONECHAR?DS18B20
LENGTH: 0002H
在百度上查了一些资料,说法不一:
1、单片机的RAM 不够,但变量太多,所以删掉一些不重要的变量就ok了.
2、KEIL没有注册,只能编译2K的
错误是内存空间溢出,可以改变KEIL的编译的模式,改为Large模式来达到编译成功。一般 KEIL在small 模式。small 模式下未指存储类型的变量默认为data型,即直接寻址,只能访问低 128 个字节,但这 128 个字节也不是全为你程序所有,寄存器 R0-R7必须映射到低RAM,要占去 8 个字节,如果使用寄存组切换,占用的更多。所以可以使用 data 区最大为 120 字节,超出 120 个字节则必须用 idata 显示的指定为间接寻址,另外堆栈至少要占用一个字节,所以你最多能使用 127 上字节。
如果以上办法都没能解决,最后想了一个办法,发现是变量太多的缘故,删除了几个不重要的变量后完美解决了 ERROR L107: ADDRESS SPACE OVERFLOW的问题.
更多推荐
已为社区贡献5条内容
所有评论(0)