|
|||||||||||
| 技術(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編譯一個奇怪的問題,請進! |
| 作者:xddjd 欄目:單片機 |
<1> 當我編譯一個項目文件時, 發(fā)現(xiàn)keil的編譯順序是按照項目文件的顯示排列順序編譯的, 現(xiàn)在發(fā)現(xiàn)這么個怪問題: 假如說項目文件里面包含 main.c file1.c file2.c file3.c 編譯完后keil輸出窗口顯示 data = 99.0 xdata = 0 code = 11451 假如我先從項目中remove file1.c,然后再加上file1.c,然后項目文件的排列順序會變成 main.c file2.c file3.c file1.c然后編譯發(fā)現(xiàn)code的大小會變化,這可能屬于正常,但是當我按照此方法挪動時,會發(fā)現(xiàn)有一次會出現(xiàn)我的code變得特別大, 會達到42081, 我想問的是,什么原因會產(chǎn)生這樣的現(xiàn)象? 我以為是中文注釋在搗鬼,然后用注釋消除器消去所有的注釋,重新實驗,還是一樣的結(jié)果。 <2> 假如我在一個文件中的函數(shù)中聲明了局部變量, 但是局部變量沒有什么用的情況下,比如說簡單賦值,TEMP1 = 0; TEMP2 = 0; TEMP3 = 0; keil能優(yōu)化掉這種代碼么? 我發(fā)現(xiàn)這種生成的HEX文件跟沒有用到這幾個局部變量的所生成的HEX文件差別很大! 什么原因? 我的程序有什么問題? 還有什么51仿真器可以仿真XDATA, RAM為1280 BYTE的51單片機? 多謝! |
| 2樓: | >>參與討論 |
| 作者: dake 于 2005/3/23 15:47:00 發(fā)布:
第二個問題你可以看看keil生產(chǎn)的匯編代碼? 第一個問題考慮一下你是不是用了C語言的標準庫,比如printf之類的.. 另外就是要考慮一下自己的rpwt.. |
|
| 3樓: | >>參與討論 |
| 作者: mabaoqiu 于 2005/3/23 18:03:00 發(fā)布:
第一個問題應(yīng)該不會發(fā)生,我沒有發(fā)現(xiàn)過這種情況! 是不是你偶然動了設(shè)置? 第三個問題,你只要知道單片機的廠家和型號再問一問仿真器廠家就可以知道了! |
|
| 4樓: | >>參與討論 |
| 作者: xddjd 于 2005/3/24 9:43:00 發(fā)布:
已解決, 不知道原因, 將所有的源碼放到另外一個目錄 重新建立工程,就沒有事情了,會不會是因為source insight的影響?用這個也建立的project, 因為好編輯 Y的小dake,都溜到這兒來了, |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |