量使用高級語言來編寫?,F(xiàn)在許多開發(fā)單片機的技術(shù)人員依然保留了80年代的開發(fā)方法。使用匯編語言,逐條指令編寫,并且手工分配單片機中的內(nèi)存資源。這種方法在寫小規(guī)模軟件還可以,可一旦軟件規(guī)模變大之后,由于匯編語言的低可讀性、低結(jié)構(gòu)性往往會讓設(shè)計人員被自己軟件中的復雜的邏輯關(guān)系搞得暈頭轉(zhuǎn)向,在一個軟件的邏輯關(guān)系混亂后,要保證寫出來的軟件能安全運轉(zhuǎn)是很困難的。
我們推薦使用C語言來寫軟件單片機代碼。(對于常見的8031系列,我們一般使用KEIL、FLANKLIN 等軟件。其它類型的單片機一般都有其配套的C語言編譯器,該型號單片機的經(jīng)銷商一般可提供)用C語言有這么幾個好處:
1. 可以大幅度加快開發(fā)進度。
2. 可以實現(xiàn)軟件的結(jié)構(gòu)化編程,它使得軟件的邏輯結(jié)構(gòu)變得清晰、有條理。
3. 在寫一些數(shù)學算法和循環(huán)、判斷語句的時候有比匯編語言高得多的效率。
4. 省去了人工分配內(nèi)存資源的工作,在匯編語言中我們不得不為每一個子程序來分配儲存變量的空間,這是一個復雜、乏味又容易出差錯的工作。而使用C語言后你只要在代碼中申明一下變量的類型,編譯器就會自動為你分配寄存器和內(nèi)存,低級重復易出差錯的事情都由計算機代勞了。根本不要人工干預(yù)。
5. 因為循環(huán)、判斷語句和變量名字都使用自然語言,因此寫出來代碼的可維護性和軟件可讀性很好。這樣當需要更換軟件開發(fā)人員的時候,可以比較容易地進行代碼移交和消化。即使沒有更換人員,他們在維護自己的代碼的時候也比較容易。
6. 當寫好了一個算法后,以后需要在不同種類的CPU上也需要這個算法時,可以直接引用原來的代碼,再配合這種CPU專用的編譯器重新編譯就可以了。這樣可以實現(xiàn)軟件的低成本跨平臺移植。而匯編語言在這種情況下,除了重新寫代碼,沒有別的辦法。因為C語言的這種特性,如果在設(shè)計復雜算法時(比如視頻/音頻信號處理、模糊邏輯和人工神經(jīng)元算法等),可以在PC機上使用Visual C++、C++ Build等x86平臺的C語言編譯器設(shè)計、調(diào)試該算法的代碼,調(diào)試成功后就可以移植到單片機的軟件系統(tǒng)中去。由于PC機上有充足的系統(tǒng)資源,開發(fā)調(diào)試進度會有大幅度的提高,這樣就節(jié)約了軟件的時間成本。
7. 在團體寫作的軟件中,軟件接口容易做到規(guī)范統(tǒng)一。
雖然使用C語言寫出來的代碼會比匯編語言所占用的空間要大5%~20%,但是由于半導體技術(shù)的發(fā)展,芯片的容量和速度有了大幅度的提高。在這種情況下,代碼占用的空間差異已經(jīng)不是很關(guān)鍵的了。相比之下,我們更應(yīng)該注重軟件是否可以長期穩(wěn)定運行的能力,注重使用先進開發(fā)工具所帶來的時間成本的優(yōu)勢。