分类:51单片机 |
http://topic.csdn.net/t/20050412/17/3930465.html
排开Keil编译器有问题,可以肯定是你的内存空间溢出了
Keil 中关于 107 错误的描述是这样的:
=========================================
Error L107 (ADDRESS SPACE OVERFLOW)
Summary *** Error L107
ADDRESS SPACE OVERFLOW
SPACE: space-name
SEGMENT: segment-name
Description The specified segment cannot be located at the specified address space. The segment is ignored.
=========================================
如果你仍要坚持自己的观点,只能去问 keil 公司的
前面有些兄弟的说法有二点是不确切的:
①就是超过变量128后必须使用compact模式编译
实际的情况是只要编译指示data=xxx 不超过 256.0 就可以用 small 编译
②128以上的某些地址为特殊寄存器使用,不能给程序用
特殊寄存器虽然使用重复的地址,但是用不同的指令访问,并不会占用RAM空间
但 small 模式下未指存储类型的变量默认为data型,即直接寻址,只能访问低 128 个字节,但这 128 个字节也不是全为你程序所有,寄存器 R0-R7必须映射到低RAM,要占去 8 个字节,如果使用寄存组切换,占用的更多。
所以你可以使用 data 区最大为 120 字节,超出 120 个字节则必须用 idata 显示的指定为间接寻址,另外堆栈至少要占用一个字节,所以你最多能使用 127 上字节(如果)
就是说极限情况下你可以定义的变量可占 247 个字节
文章评论(0条评论)
登录后参与讨论