⑴ stc8h8k64u在keil選什麼
stc8h8k64u在keil選MCU
為避免之前STC12封裝庫存在的問題, 這個封裝庫在以下方面進行了改進
兼容SDCC和Keil C51
FwLib_STC12封裝庫只支持SDCC編譯, 並且寄存器命名與官方不同, 使得基於FwLib_STC12的項目代碼與其他Keil開發的項目代碼無法兼容.
在FwLib_STC8的開發上, 採用了與官方庫文件一致的命名, 並且增加了對Keil C51和SDCC的適配. 基於FwLib_STC8的項目, 可以在linux下使用SDCC編譯, 也可以在Windows下使用Keil C51環境進行編譯.
減小代碼尺寸
FwLib_STC12封裝庫較多使用函數的方式對寄存器進行封裝, 而函數與函數間的層級調用都會增加棧開支, 這樣一方面8位MCU本來就不多的內存更加捉襟見肘, 另一方面增加了生成的固件尺寸.
在FwLib_STC8封裝庫中, 大量使用宏語句對寄存器操作進行封裝, 並且控制方法間的層級調用深度, 有效節省了固件體積和堆棧佔用。
開源軟體mcu8051ide 功能不是一般的強,用c語言編程,界面不輸給商業軟體,而且提供多種模擬器件如:led 數碼管,矩陣數碼管(8×8)按鍵,矩陣按鍵,甚至溫度感測器。開源的沒有任何限制,完全免費,自動生成多種燒錄文件(我們一般就用.HEX的)感覺keil c弱爆了。
安裝方法,下載sdcc(mcu8051ide是基於sdcc的)和mcu 8051 ide都安裝好就可以啦,頭文件在sdcc的安裝文件夾內(include)有些關鍵字要加兩個連在一起的下劃線比如 __interrup, __code.
頭文件與keil的不通用,比如定義P0口
在keil下是: sfr P0=0x80; 在sdcc下是: __sfr __at P0 0x80; 這個P0^1的不行,但sdcc裡面有很多頭文件8051.h 80c51.h 80c52.h等等 基本滿足要求,給stc單片機編程不用改,加一點特殊的就可以。這樣優秀的開源軟體不用真的是白不用啊。
⑶ gcc編譯器可以用於單片機的開發嗎
可以的,需要交叉編譯。我們公司就在做這個。原來使用sdcc做的編譯器,現在改為gcc了。
⑷ sdcc 編譯器錯誤不能打開
點擊詳細編輯器輸出,查看具體的原因,在伺服器中找到這個文件。
不是叫做:編譯器錯誤,而是應該叫做:編譯錯誤。如果說真的是編譯器內部本身(例如:C語言編譯器、或者是別的各種編程語言的編譯器)出現了bug的話,那麼任何人也沒有辦法。
只有開發編譯器軟體的軟體開發人員才能夠解決這樣的問題;如果是在你的源程序中產生的各種編譯錯誤(例如:語法錯誤、語義錯誤等),那麼你只能夠仔細地檢查、編譯、調試你的源程序了。
⑸ sdcc版是啥意思
SDCC(Small Device C Compiler)是一個優化的 ANSI - C交叉編譯器,目標CPU為基於Intel 8051, Maxim 80DS390, Zilog Z80 和Motorola 68HC08 的單片機。
SDCC同時帶有一個源代碼級調試工具SDCDB,使用的是Daniel's s51模擬器當前版本。SDCC是由Sandeep Dutta 所寫的,並依據GPL license 發行。
sdcc的特點:
1、SDCC的sdas和sdld 是基於ASXXXX的交叉編譯工具和鏈接工具,他們都是免費開源的軟體,依據GNU General Public License (GPL) 發布。
2、有針對特定MCU的編程語言擴展,可以高效的使用基本的硬體資源。
3、有大量的標准優化,如全局字表達式削減,循環優化(無任何操作的循環優化,歸納變數循環優化,逆循環優化), 常量合並的傳播,復制傳播,死代碼刪除, 'switch'語句的轉移表優化。
4、針對特定MCU的優化,包括全局寄存器分配演算法。
5、特定MCU後端適應能力,能夠很好的適配其他的8位的MCU。
(5)sdcc編譯多個文件擴展閱讀:
交叉編譯出現和流行是和嵌入式系統的廣泛發展同步的。常用的計算機軟體,都需要通過編譯的方式,把使用高級計算機語言編寫的代碼(比如C代碼)編譯(compile)成計算機可以識別和執行的二進制代碼。
比如,在Windows平台上,可使用Visual C++開發環境,編寫程序並編譯成可執行程序。這種方式下,我們使用PC平台上的Windows工具開發針對Windows本身的可執行程序,這種編譯過程稱為native compilation,中文可理解為本機編譯。
然而,在進行嵌入式系統的開發時,運行程序的目標平台通常具有有限的存儲空間和運算能力,比如常見的 ARM 平台,其一般的靜態存儲空間大概是16到32MB,而CPU的主頻大概在100MHz到500MHz之間。
這種情況下,在ARM平台上進行本機編譯就不太可能了,這是因為一般的編譯工具鏈(compilation tool chain)需要很大的存儲空間,並需要很強的CPU運算能力。
為了解決這個問題,交叉編譯工具就應運而生了。通過交叉編譯工具,我們就可以在CPU能力很強、存儲空間足夠的主機平台上(比如PC上)編譯出針對其他平台的可執行程序。
要進行交叉編譯,要在主機平台上安裝對應的交叉編譯工具鏈(cross compilation tool chain),然後用這個交叉編譯工具鏈編譯我們的源代碼,最終生成可在目標平台上運行的代碼。
⑹ linux下怎麼編譯單片機c代碼,怎麼下載到51單片機上呢
1.編譯軟體用sdcc
2.sdcc不支持keil51c 的一些語法。要做以下修改:
sbitled1=P1^0; 改為 #define led1 P1_0
中斷函數interrupt改為__interrupt
單個位 P1^0 改為P1_0
若vim安裝插件YCM的話,要在.ycm_extra_conf.py加入以下兩個路徑
/usr/share/sdcc/include
/usr/share/sdcc/include/mcs51
沒創建一個工程都要拷貝一份.ycm_extra_conf.py到該工程的目錄下。
3.編譯用命令
` sdcc 目標文件
4.燒錄軟體用stcflash.py,該軟體只能支持stc89c52rc,不支持stc89c52。我自己親自試過。
sudo python ./stcflash.py 目標文件
⑺ 單片機xdata變數超過256居然會重啟非看門狗問題。MCU:C8051F930 SDCC編譯
我在用C8051F系列單片機的時候也遇到類似問題,大都出現在編譯器和模擬軟體上。咨詢供應商,要他們解決這個問題。
⑻ SDCC編譯器警告問題,怎麼解決
編譯器的警告要認真對待,應該盡量編寫沒有警告的代碼,除非你確切的知道編譯器為什麼產生警告,以及後果