|
今天遇到一個(gè)keil問(wèn)題,編譯出現(xiàn)下面提示:最后完美解決,把方法分享給51hei論壇的朋友們
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?_WRITEONECHAR?DS18B20
LENGTH: 0002H
在百度上查了一些資料,說(shuō)法不一:
1、單片機(jī)的RAM 不夠,但變量太多,所以刪掉一些不重要的變量就ok了.
2、KEIL沒(méi)有注冊(cè),只能編譯2K的
錯(cuò)誤是內(nèi)存空間溢出,可以改變KEIL的編譯的模式,改為L(zhǎng)arge模式來(lái)達(dá)到編譯成功。一般 KEIL在small 模式。small 模式下未指存儲(chǔ)類(lèi)型的變量默認(rèn)為data型,即直接尋址,只能訪(fǎng)問(wèn)低 128 個(gè)字節(jié),但這 128 個(gè)字節(jié)也不是全為你程序所有,寄存器 R0-R7必須映射到低RAM,要占去 8 個(gè)字節(jié),如果使用寄存組切換,占用的更多。所以可以使用 data 區(qū)最大為 120 字節(jié),超出 120 個(gè)字節(jié)則必須用 idata 顯示的指定為間接尋址,另外堆棧至少要占用一個(gè)字節(jié),所以你最多能使用 127 上字節(jié)。
1.JPG (24.02 KB, 下載次數(shù): 308)
下載附件
2013-7-13 03:26 上傳
如果以上辦法都沒(méi)能解決,最后想了一個(gè)辦法,發(fā)現(xiàn)是變量太多的緣故,刪除了幾個(gè)不重要的變量后完美解決了 ERROR L107: ADDRESS SPACE OVERFLOW的問(wèn)題.
|
|