今天遇到一个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的问题.

 

转载——http://www.51hei.com/bbs/dpj-19920-1.html

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐