keil c報錯:*** ERROR L107: ADDRESS SPACE OVERFLOW
已有 1848 次閱讀2016-8-26 00:57
|
ERROR
【ADDRESS SPACE OVERFLOW】
//----AT89C52-----//
地址空間溢出,簡而言之就是RAM空間不夠用,通常是由于全局變量過多引起:
解決方法一:
在部分變量定義時加上 [idata]。(系統(tǒng)默認尋址是0-128字節(jié)直接尋址區(qū),加上 idata后可增加128-256的間接尋址區(qū))
解決方法二:
在部分只讀變量定義時增加關(guān)鍵字[code]
解決方法三:(慎)
在部分變量定義時添加關(guān)鍵字[xdata],需要注意的是這個區(qū)域的數(shù)據(jù)不穩(wěn)定,在一些需要經(jīng)常改變的變量中用此關(guān)鍵詞定義可能出現(xiàn)程序異常。
解決方法四:
減少全局變量或其大小,可通過減少全局變量,將int型變量在允許情況下改成char型,或把char型改成bit型,以減少全局變量所占空間。
注:------------
網(wǎng)上有人說可通過更改keil所用模式來解決,即可將<small>改為<compact>、<large>來解決,但自己試了下發(fā)現(xiàn)程序沒有任何變化,所以這種方法覺得待驗證,當(dāng)然也有可能是自己錯了,也歡迎大家指正。