微控制器程式語言的比較
阿新 • • 發佈:2019-01-27
微控制器又稱單片微控制器,它是把一個計算機系統,包括cpu、ram、rom、定時/計數器和多種i/o介面整合到一個晶片上。由於微控制器的種種優點和特性,其應用領域極其廣泛。微控制器系統同樣也由硬體系統和軟體系統構成,因此涉及到程式的編寫問題。微控制器的程式語言很多,大致分成三類:機器語言、組合語言、高階語言。機器語言由於繁瑣容易出錯,一般使用者已經不再使用。下面分別對組合語言和最常用的高階語言進行分析。
微控制器的組合語言
組合語言是一種用文字助記符來表示機器指令的符號語言,是最接近機器碼的一種語言。其主要優點是佔用資源少,程式執行效率高,由於它一條指令就對應一條機器碼,每一步的執行動作都很清楚,並且程式大小和堆疊呼叫情況都容易控制,除錯起來也比較方便。但是不同的型別的微控制器,其組合語言可能有點差異,所以不易移植,因為他們的指令系統是有區別的。但懂得組合語言可幫助瞭解影響任何語言效率的特殊規定。例如,懂得組合語言指令就可以使用在片內ram作變數的優勢,因為片外變數需要幾條指令才能設定累加器和資料指標進行存取。同樣的,當要求使用浮點數和啟用函式時也只有具備彙編程式設計經驗才能避免生成龐大的、效率低的程式,對於這方面的程式設計,沒有組合語言是做不到的。
微控制器的c語言
微控制器的c語言是一種編譯型程式設計語言,它兼顧了多種高階語言的特點,並具備組合語言的功能。c語言具有功能豐富的庫函式,運算速度快,編譯效率高,有良好的可移植性,而且可以實現直接對系統硬體的控制。此外,c語言程式具有完整的程式模組結構,從而為軟體開發中採用模組化程式設計方法提供了有力的保障。與彙編相比,有如下優點:
對微控制器的指令系統不要求瞭解,僅要求對51的儲存器結構有初步瞭解,至於暫存器分配、不同儲存器的定址及資料型別等細節均由編譯器管理。
程式有規範的結構,可分為不同的函式。這種方式可使程式結構化,將可變的選擇與特殊操作組合在一起,改善了程式的可讀性。
程式設計及程式除錯時間顯著縮短,從而提高效率。提供的庫包含許多標準子程式,具有較強的資料處理能將已編好程式可容易的植入新程式,因為它具有方便的模組化程式設計技術。
功能強而有彈性,提供的庫包含許多標準子程式,具有較強的資料處理能力,能將已編好程式容易的植入新程式,因為它具有方便的模組化程式設計技術。
微控制器c語言作為一種非常方便的語言而得到廣泛的支援,c語言程式本身並不依賴於機器硬體系統,基本上不做修改就可根據微控制器的不同較快地移植過來。
用微控制器c語言進行程式設計,已成為微控制器軟體開發的一個主流,作為一個技術全面並涉足較大規模的軟體系統開發的微控制器開發人員最好能夠掌握基本的c語言程式設計。
其他高階語言
對於微控制器程式設計,還有basic語言和pl/m語言。basic一直被認為是初學程式設計的語言,容易入門,
pl/m語言可讀性好,可靠性高,但不支援複雜的算術運算、浮點變數且無豐富的庫函式支援。
結語
組合語言與處理器密切相關。每種處理器都有自己的指令系統,相應的組合語言各不相同。所以,組合語言程式的通用性、可移植性較差。相對來說,高階語言與具體計算機無關,高階語言程式可以在多種計算機上編譯後執行。
組合語言功能有限,又涉及暫存器、主存單元等硬體細節,所以編寫程式比較繁瑣,除錯起來也比較困難。高階語言提供了強大的功能,採用類似自然語言的語法,所以容易被掌握和應用,它不必關心諸如標誌、堆疊等瑣碎問題。
組合語言本質上就是機器語言,它可以直接、有效地控制計算機硬體,因而容易產生執行速度快、指令序列短小的高效率目標程式。高階語言不易直接控制計算機的各種操作,編譯程式產生的目標程式往往比較龐大、程式難以優化,所以執行速度較慢。
綜上所述,微控制器的各種程式語言各有各的優缺點,作為微控制器初學者,還是應該先學習組合語言,因為組合語言程式除了具有簡潔明快、跳躍性強、佔rom資源少等優點以外,還因它和微控制器底層硬體緊密聯絡,可以讓初學者更加了解微控制器硬體系統各種資源,熟悉各個功能模組的作用,從而為編出更高效率的程式打好紮實的基礎。
用微控制器組合語言編寫的程式程式碼效率高,但學習起來相對難度較大,而且對於一個大型專案,如果完全採用組合語言來程式設計,就顯得很繁瑣,尤其是遇到演算法方面的問題時,組合語言根本就應付不了。況且現在微控制器的主頻在不斷的提高,在高頻率時鐘的作用下,我們完全不需要那麼高效率的程式碼;另外,微控制器的rom和ram空間也在不斷的增加,足夠裝得下用c語言寫的任何程式程式碼,微控制器c語言相關的資料又多又好找,可移植性非常好,比如只需要改變一個io口寫溫度感測器的程式在任何一個微控制器上都能使用。用微控制器c語言進行程式設計,已成為微控制器軟體開發的一個主流,作為一個技術人員最好能夠掌握基本的c語言程式設計。
當然,有時候用微控制器c語言也不能夠實現所有要編寫程式的功能,比如當想編寫一個精確控制的定時程式時,用起組合語言來還是比較方便的。因此想成為一個優秀的微控制器程式設計技術員,最好就是能懂得微控制器c語言和組合語言的混合程式設計。因為,組合語言程式佔用儲存空間很小、對硬體控制靈活、反應速度快,但是其可讀性差、難於除錯與更新維護。c語言更新維護方便、可移植性強,但實踐證明,單獨使用c語言開發微控制器程式也存在諸多不足之處,例如佔用儲存空間大、對硬體控制不靈活等。所以單獨使用任何一門語言開發微控制器程式,都不夠理想。為此,要編寫出高速度、高效率、可移植性強的微控制器程式,集合c語言與組合語言各自的優勢,創出所謂的微控制器c和組合語言混合程式設計。在程式設計過程中,通常用c語言來構建程式框架,而用匯程式設計序作為子程式來處理一些有實時性要求的特殊應用。
微控制器的組合語言
組合語言是一種用文字助記符來表示機器指令的符號語言,是最接近機器碼的一種語言。其主要優點是佔用資源少,程式執行效率高,由於它一條指令就對應一條機器碼,每一步的執行動作都很清楚,並且程式大小和堆疊呼叫情況都容易控制,除錯起來也比較方便。但是不同的型別的微控制器,其組合語言可能有點差異,所以不易移植,因為他們的指令系統是有區別的。但懂得組合語言可幫助瞭解影響任何語言效率的特殊規定。例如,懂得組合語言指令就可以使用在片內ram作變數的優勢,因為片外變數需要幾條指令才能設定累加器和資料指標進行存取。同樣的,當要求使用浮點數和啟用函式時也只有具備彙編程式設計經驗才能避免生成龐大的、效率低的程式,對於這方面的程式設計,沒有組合語言是做不到的。
微控制器的c語言
微控制器的c語言是一種編譯型程式設計語言,它兼顧了多種高階語言的特點,並具備組合語言的功能。c語言具有功能豐富的庫函式,運算速度快,編譯效率高,有良好的可移植性,而且可以實現直接對系統硬體的控制。此外,c語言程式具有完整的程式模組結構,從而為軟體開發中採用模組化程式設計方法提供了有力的保障。與彙編相比,有如下優點:
對微控制器的指令系統不要求瞭解,僅要求對51的儲存器結構有初步瞭解,至於暫存器分配、不同儲存器的定址及資料型別等細節均由編譯器管理。
程式有規範的結構,可分為不同的函式。這種方式可使程式結構化,將可變的選擇與特殊操作組合在一起,改善了程式的可讀性。
程式設計及程式除錯時間顯著縮短,從而提高效率。提供的庫包含許多標準子程式,具有較強的資料處理能將已編好程式可容易的植入新程式,因為它具有方便的模組化程式設計技術。
功能強而有彈性,提供的庫包含許多標準子程式,具有較強的資料處理能力,能將已編好程式容易的植入新程式,因為它具有方便的模組化程式設計技術。
微控制器c語言作為一種非常方便的語言而得到廣泛的支援,c語言程式本身並不依賴於機器硬體系統,基本上不做修改就可根據微控制器的不同較快地移植過來。
用微控制器c語言進行程式設計,已成為微控制器軟體開發的一個主流,作為一個技術全面並涉足較大規模的軟體系統開發的微控制器開發人員最好能夠掌握基本的c語言程式設計。
其他高階語言
對於微控制器程式設計,還有basic語言和pl/m語言。basic一直被認為是初學程式設計的語言,容易入門,
pl/m語言可讀性好,可靠性高,但不支援複雜的算術運算、浮點變數且無豐富的庫函式支援。
結語
組合語言與處理器密切相關。每種處理器都有自己的指令系統,相應的組合語言各不相同。所以,組合語言程式的通用性、可移植性較差。相對來說,高階語言與具體計算機無關,高階語言程式可以在多種計算機上編譯後執行。
組合語言功能有限,又涉及暫存器、主存單元等硬體細節,所以編寫程式比較繁瑣,除錯起來也比較困難。高階語言提供了強大的功能,採用類似自然語言的語法,所以容易被掌握和應用,它不必關心諸如標誌、堆疊等瑣碎問題。
組合語言本質上就是機器語言,它可以直接、有效地控制計算機硬體,因而容易產生執行速度快、指令序列短小的高效率目標程式。高階語言不易直接控制計算機的各種操作,編譯程式產生的目標程式往往比較龐大、程式難以優化,所以執行速度較慢。
綜上所述,微控制器的各種程式語言各有各的優缺點,作為微控制器初學者,還是應該先學習組合語言,因為組合語言程式除了具有簡潔明快、跳躍性強、佔rom資源少等優點以外,還因它和微控制器底層硬體緊密聯絡,可以讓初學者更加了解微控制器硬體系統各種資源,熟悉各個功能模組的作用,從而為編出更高效率的程式打好紮實的基礎。
用微控制器組合語言編寫的程式程式碼效率高,但學習起來相對難度較大,而且對於一個大型專案,如果完全採用組合語言來程式設計,就顯得很繁瑣,尤其是遇到演算法方面的問題時,組合語言根本就應付不了。況且現在微控制器的主頻在不斷的提高,在高頻率時鐘的作用下,我們完全不需要那麼高效率的程式碼;另外,微控制器的rom和ram空間也在不斷的增加,足夠裝得下用c語言寫的任何程式程式碼,微控制器c語言相關的資料又多又好找,可移植性非常好,比如只需要改變一個io口寫溫度感測器的程式在任何一個微控制器上都能使用。用微控制器c語言進行程式設計,已成為微控制器軟體開發的一個主流,作為一個技術人員最好能夠掌握基本的c語言程式設計。
當然,有時候用微控制器c語言也不能夠實現所有要編寫程式的功能,比如當想編寫一個精確控制的定時程式時,用起組合語言來還是比較方便的。因此想成為一個優秀的微控制器程式設計技術員,最好就是能懂得微控制器c語言和組合語言的混合程式設計。因為,組合語言程式佔用儲存空間很小、對硬體控制靈活、反應速度快,但是其可讀性差、難於除錯與更新維護。c語言更新維護方便、可移植性強,但實踐證明,單獨使用c語言開發微控制器程式也存在諸多不足之處,例如佔用儲存空間大、對硬體控制不靈活等。所以單獨使用任何一門語言開發微控制器程式,都不夠理想。為此,要編寫出高速度、高效率、可移植性強的微控制器程式,集合c語言與組合語言各自的優勢,創出所謂的微控制器c和組合語言混合程式設計。在程式設計過程中,通常用c語言來構建程式框架,而用匯程式設計序作為子程式來處理一些有實時性要求的特殊應用。