单片机型号STC15F2K60s2
编译环境keil4
系统win7
模式:small
错误:ERROR L107: ADDRESS SPACE OVERFLOW
这个错误意思,提示地址超出
又去看了一遍数据手册
不应该是两k吗,为啥用了130就超出了
认真看了一下
2k其实是内部256+内部扩展的1792
内部256又分为,高128,低128,具体可以看下面这张图
正常情况下定义,编译器都是分配在低128字节,所以应该不超过128就可以
但是实际测试的时候data极限值为129,也可以编译通过,这就很奇怪了
看一下keil连接文件.m51
豁然开朗,还有一个堆栈。(内部不要使用过多,不然堆栈太小,程序可能会炸)
要想把变量定义在高128,加一个关键字idata就可以了
定义在内部扩展的RAM,加xdata
或者可以修改编译模式