keil960編譯變大
Ⅰ keil中數組太大,編譯出錯,該怎麼解決
如果是51單片機的話,因為RAM資源很小,所以要盡量節約每一個位元組RAM,如果是常量數組就定義成常量,例如 code char datastr[2]={1,2};
如果有外部RAM,則定義到XRAM中,例如:xdata char datastr[2];
能用BIT就不要用char,能用char 就不要用Int。
Ⅱ keil裡面data怎麼會變大
這是因為,你刪除的程序中,有幾行是函數的調用,被你刪除後,這些函數就只有函數體,卻沒有調用了(從編譯信息看,是memory_clear_with_font_bgcolor)。當這個函數中有局部變數時,由於沒被調用過,所以KEIL無法進行變數的優化,最後只能把局部變數保存下來,反而多佔用了空間。
解決辦法:1、把不用函數刪掉或注釋掉
2、寫成這樣,偽調用:
a = 1;
if(a==0)
{
memory_clear_with_font_bgcolor();//把從不調用的函數放這里
}
Ⅲ 我用KEIL編譯程序時,我的main主程序為空,然後我再加了一些c文件,為什麼編譯連接後CODE也會很大
編譯不只是編譯main函數,你工程裡面所有的.c文件裡面的代碼,只不過執行不到而已。不過沒有執行到的函數一般會告警的,除非你把告警關了(選項裡面有個告警級別,級別0就是關了)。連接程序只是把所有的目標程序安排適當的地址而已。
Ⅳ keil uvision3 hex怎麼轉變為bin後變大了
應該是你的工具用錯了,HEX文件是在代碼之後還帶有位置信息,而BIN文件只有代碼,所以HEX必定比BIN大.
一般在編譯的時候,項目目錄下有個BIN文件同時產生的,就是那個文件.
如果只有HEX,那就到網上下一個HEX2BIN的小工具好了.
Ⅳ keil uvision4編譯部分(就是下邊那個對錯判斷部分變的和程序部分重疊了)的地方變成大屏了怎麼辦
拖動對話框,會出現幾個小圖標,把對話框放到圖標上就可以切換位置了。keil uvision4的窗口移動是很人性化的,你試試看吧。
Ⅵ 用Keil編譯程序時數據段過長怎麼辦
程序DATA區空間已超過指定單片機的DATA區空間,可以用keil C編譯的時候壓縮。
Ⅶ keil編譯顯示程序太大~編譯不了怎麼辦
這種情況已經有一陣時間了,KEIL顯示破解成功,其實是假的。現在我的做法是拿一個大程序來編譯,如果編譯通過,那就是破解成功,如果還有限制,那就繼續破。我以前的KEIL
C251破了半天,算了N個碼,個個都顯示已成功,可實際上直到N+1次才編譯通過,我一同事更倒霉,整整算了3天。所以,破這玩意沒技術,就倆字,堅持。
Ⅷ keil中編譯時代碼過大導致工程失敗怎麼辦
各種MCU的代碼容量都是有限的,例如,89c51的容量是4K,如果你的程序編譯時超過了4K,那編譯器就不會再往下走了,而是出現target not created,解決辦法就是換塊引腳兼容的MCU,例如89C51換成89C52,容量變8K,就可以解決問題了
Ⅸ 這個程序用keil編譯後就不能運行了,而且hex文件也會變大,怎麼回事啊,求高手給我指點一下吧謝謝
不編譯直接下載就好用,絕不可能!
你沒有搞清楚什麼是下載吧,好用是什麼意思,是什麼好用啊,單片機不下載程序能好用,說夢話吧,這是源程序,怎麼能直接下載,你下載的是什麼,大概是原有的HEX代碼文件嗎,如果不是下載HEX代碼文件,就是根本就不明白什麼叫下載。
Ⅹ 用GCC編譯完的程序要比用keil編譯完的大,請問是為什麼
很正常啊,不同編譯器的編譯演算法不一樣。對於同樣的語句,如何轉化為匯編,不同的公司會有不同的理解。
呵呵,盡信書不如無書