|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于Keil的絕對地址偏移問題? |
| 作者:wag 欄目:單片機(jī) |
我在網(wǎng)上看到有關(guān)C51程序定位的問題,我試了一下并不是想象的那樣。比如對于C51程序(假如只是有main函數(shù)),可以在Keil的CODE位置中輸入“*main(0x9000)”,但是編譯出來的結(jié)果是這樣的,在CODE區(qū)的0000H處依舊有幾條轉(zhuǎn)移代碼,是不是STARTUP的原因呢? 如果用匯編 ORG 9000H ........ 那絕對在CODE區(qū)的0000H出找不到任何東西(當(dāng)然就是全部的FF)。 我想請問用C語言能否實(shí)現(xiàn)想?yún)R編一樣的絕對地址定位呢(在Keil中)? |
| 2樓: | >>參與討論 |
| 作者: Iam11 于 2005/3/9 17:48:00 發(fā)布:
可以 例如int xdata A _at_ 0x2000 將變量A定義在地址2000 |
|
| 3樓: | >>參與討論 |
| 作者: wag 于 2005/3/9 20:24:00 發(fā)布:
你這個是變量,不是函數(shù)。即使是函數(shù)我上面的那種方法也不行。 |
|
| 4樓: | >>參與討論 |
| 作者: wag 于 2005/3/10 8:43:00 發(fā)布:
用C語言能不能把程序的絕對地址定位在0x9000開始的地方呢? 我知道用匯編是可以的,但是在Keil中用C我就實(shí)現(xiàn)不了,請指教。謝謝!我的意思是用C語言能不能把程序的絕對地址定位在0x9000開始的地方呢? |
|
| 5樓: | >>參與討論 |
| 作者: xwj 于 2005/3/10 9:36:00 發(fā)布:
和MON51的設(shè)置一樣,這樣作: 1、把Startup.a51拷貝到工程目錄加入工程,修改92行的 CSEG AT 0X0 為 CSEG AT 0X9000 2、菜單中選Project--Option for Target...,“C51”頁下將中斷偏移“Interrupt vectors at”改為0X9000 3、“BL51 Locate”頁下在"CODE"后面的輸入0X9000 4、重新編譯工程 這樣所有代碼都是從0X9000開始了 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |