|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
keil編譯器中的Memory Model問題 |
| 作者:jovie 欄目:MCU技術(shù) |
各位大蝦,請幫我看下這個問題:我把keil編譯器中的MEMORY MODEL選擇由原來的Small模式改成Large模式,編譯生成的Hex文件燒進CPU,機器卻運行不了;拿別的程序再試試,由原來的Large模式改成Small模式,也編譯生成Hex文件了,可燒進CPU后,也運行不了;不就是讀取非顯式變量(沒有指定存放區(qū)域的變量)的快慢(Data或者Xdata)而已嘛,而且用Keil也編譯過了,為什么結(jié)果就不行了呢? |
| 2樓: | >>參與討論 |
| 作者: zlg900 于 2005/4/22 8:37:00 發(fā)布:
您要清楚您把變量存放在哪個存儲區(qū)域了 不知您用的是哪款單片機? |
|
| 3樓: | >>參與討論 |
| 作者: jovie 于 2005/4/22 8:53:00 發(fā)布:
我用的是STC89C516RD+ 我以前用的是P89C51RD+,基于這個單片機的程序我用的keil編譯器中的MEMORY MODEL是Large模式,現(xiàn)在我用的是STC89C516RD+(兼容P89C51RD+),如果還是Large模式程序就正常運行,可如果改成Small模式就不運行了,兩種模式下都可以正常編譯通過,實在不明白為什么一種可以,而另一種不行! |
|
| 4樓: | >>參與討論 |
| 作者: zlg900 于 2005/4/22 9:13:00 發(fā)布:
re: 有可能是堆棧溢出了,要么調(diào)整程序結(jié)構(gòu)(注意內(nèi)存的使用),要么使用Large模式。 |
|
| 5樓: | >>參與討論 |
| 作者: jovie 于 2005/4/22 9:21:00 發(fā)布:
Small模式改成Large模式 還有一個問題,我把一個項目由原來的Small模式改成Large模式,編譯完的程序也不運行!我需要把這兩個原來不同模式下的項目綜合起來編成一個新的程序 |
|
| 6樓: | >>參與討論 |
| 作者: zlg900 于 2005/4/22 9:42:00 發(fā)布:
當(dāng)使用Large模式時,需要注意: 1. 您將變量存儲在內(nèi)部的擴展xdata空間,還是存儲在外部xdata空間? 2. 若您使用內(nèi)部xdata時,需要通過AUXR寄存器進行設(shè)置,并注意變量賦值和設(shè)置AUXR的順序問題; 3. 外部xdata要確認外部RAM是否完好無損。 |
|
| 7樓: | >>參與討論 |
| 作者: jovie 于 2005/4/22 16:08:00 發(fā)布:
Small模式改成Large模式 忙了一個下午,想把原來Small模式改成Large模式,編譯通過了,運行結(jié)果卻不行!我用了個外部擴展的62256,而且設(shè)置AUXR=0x02;//禁止訪問內(nèi)部擴展RAM,我確認我的62256是沒有問題的,因為我用別的項目文件試過.我想盡量把變量指定區(qū)域,這樣不知道有沒有用? |
|
| 8樓: | >>參與討論 |
| 作者: zlg900 于 2005/4/22 16:22:00 發(fā)布:
“運行結(jié)果卻不行”是指不能讀寫外部RAM嗎,建議您檢查一下硬件電路... * - 本貼最后修改時間:2005-4-22 16:41:45 修改者:zlg900 |
|
| 9樓: | >>參與討論 |
| 作者: jovie 于 2005/4/22 16:42:00 發(fā)布:
機子根本就沒有反應(yīng) 好象機子根本就沒有反應(yīng),我用LED來跟蹤,發(fā)現(xiàn)就沒有機子就不執(zhí)行程序! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |