【ADDRESS SPACE OVERFLOW】
//----AT89C52-----//
地址空间溢出,简而言之就是RAM空间不够用,通常是由于全局变量过多引起:
解决方法一:
在部分变量定义时加上 [idata]。(系统默认寻址是0-128字节直接寻址区,加上 idata后可增加128-256的间接寻址区)
解决方法二:
在部分只读变量定义时增加关键字[code]
解决方法三:(慎)
在部分变量定义时添加关键字[xdata],需要注意的是这个区域的数据不稳定,在一些需要经常改变的变量中用此关键词定义可能出现程序异常。
解决方法四:
减少全局变量或其大小,可通过减少全局变量,将int型变量在允许情况下改成char型,或把char型改成bit型,以减少全局变量所占空间。
注:------------
网上有人说可通过更改keil所用模式来解决,即可将<small>改为<compact>、<large>来解决,但自己试了下发现程序没有任何变化,所以这种方法觉得待验证,当然也有可能是自己错了,也欢迎大家指正。