<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Keil Memory Model的選擇問(wèn)題

Keil Memory Model的選擇問(wèn)題

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
Memory Model:用鼠標點(diǎn)擊Memory Model的下拉箭頭,會(huì )有3個(gè)選項:

   Small:變量存儲在內部RAM里;

本文引用地址:http://dyxdggzs.com/article/201611/316953.htm

   Compact:變量存儲在外部RAM里,使用頁(yè)8位間接尋址;

   Large:變量存儲在外部RAM里,使用16位間接尋址;

  我們一般使用Small來(lái)存儲變量,就是說(shuō)單片機優(yōu)先把變量存儲在內部RAM里,如果內部RAM不夠了,才會(huì )存到外部去。

Compact的方式要自己通過(guò)程序來(lái)指定頁(yè)的高位地址,編程比較復雜,如果外部RAM很少,只有256個(gè)字節,那么對該256個(gè)字節的讀取就比較快,用MOVX @Ri,A 或MOVX A,@Ri指令。如果超過(guò)256字節,那么要不斷地進(jìn)行切換的話(huà),就比較麻煩。Compact模式適用于比較少的外部RAM的情況。

Large模式,是指變量會(huì )優(yōu)先分配到外部RAM里,用MOVX A,@DPTR或MOVX @DPTR,A來(lái)讀取。

要注意的是,3種存儲方式都支持內部256字節和外部64k字節的RAM。區別是變量的優(yōu)先(或默認)存儲在哪里的區別。除非你不想把變量存儲在內部RAM,才使用后面的Compact,Large模式。因為變量存儲在內部RAM里,運算速度比存儲在外部RAM要快的多,大部分的應用都是選擇Small的模式。

使用Small的模式:也不是說(shuō)變量就不可以存儲在外部,一樣可以存儲在外部,只是你要指定,比如:

unsigned char xdata a; 那么變量a就存儲在外部的RAM。

unsigned char a; 變量存儲在內部RAM。

使用Large的模式:

unsigned char xdata a; 那么變量a就存儲在外部的RAM。

unsigned char a;變量存儲在外部RAM。

  這就是區別,就是說(shuō)這幾個(gè)選項只是影響沒(méi)有特別指定變量的存儲空間的時(shí)候,默認存儲在哪里,比如上面的變量定義unsigned char a。


KEIL編譯出錯和Memory Model選擇
在輸出設置里面target--->memorymodel選擇如圖所示
Build target Target 1
compiling main.c...
linking...
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?MAIN
LENGTH: 0024H
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: RECEIVEDFLAG
SEGMENT: ?DT?MAIN
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: DISPBUF
SEGMENT: ?DT?MAIN
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: CHULI
SEGMENT: ?DT?MAIN
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: UCRECEIVEDINDEX
SEGMENT: ?DT?MAIN
Program Size: data=106.1 xdata=0 code=4870
Target not created
CPU是STC89C52,編譯出錯怎么解決。
還有我應該寫(xiě)好程序后應該怎么樣處理Memory Model這個(gè)選項卡?
因為我在Small模式下面編譯成功了以后,我在里面加了一些程序,空間不夠了提示,我就把它改為了PDATA,然后編譯通過(guò),但是程序就出錯了,一直在主函數的while(flag)里面循環(huán),即使我沒(méi)有給flag設置成1,他照樣能進(jìn)去,而且還循環(huán)了??ㄔ谠诶锩媪?。
我不明白我應該怎么樣解決這個(gè)問(wèn)題,請教!
改成XDATA,外部存儲區。
ERROR L107: ADDRESS SPACE OVERFLOW
是地址空間溢出
PDATA也沒(méi)多少,因為特殊功能半區里很多是不能占用的。
沒(méi)必要的不要設置成靜態(tài)變量
追問(wèn)改成XDATA是能編譯通過(guò),不過(guò)我聽(tīng)別人說(shuō)一般這個(gè)都是默認的么,改這個(gè)對CPU有沒(méi)有要求啊,
回答 外部存儲區,AT的片子得加存儲片子,STC的直接做到芯片里了??茨阗I(mǎi)的什么芯片。
KEIL 沒(méi)破解有2K限制,你程序超過(guò)2048了,看是不是這個(gè)原因。
追問(wèn)你是指code=4870吧?這個(gè)沒(méi)有問(wèn)題。



關(guān)鍵詞: KeilMemoryMode

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>