從單片機(jī)誕生開(kāi)始發(fā)展到現(xiàn)在,單片機(jī)的規(guī)格并沒(méi)有多大的變化,但是語(yǔ)言和支持軟件的擴(kuò)展為應(yīng)用程序開(kāi)發(fā)開(kāi)辟了許多途徑。多年來(lái),單片機(jī)進(jìn)行編程涉及兩種語(yǔ)言的選擇:C語(yǔ)言和匯編語(yǔ)言。但是隨著現(xiàn)在可用于單片機(jī)的新語(yǔ)言出現(xiàn),用戶在應(yīng)用程序設(shè)計(jì)中面臨更多選擇。
宇凡微單片機(jī)開(kāi)發(fā)工程師表示,單片機(jī)開(kāi)發(fā)用哪種語(yǔ)言取決于你正在處理的應(yīng)用程序。當(dāng)前主要有以下幾種語(yǔ)言可以用于單片機(jī)開(kāi)發(fā):
(1)C語(yǔ)言與匯編語(yǔ)言
在單片機(jī)可以使用新語(yǔ)言之前,兩個(gè)可用的選擇是C和Assembly。在深入探索新語(yǔ)言之前,讓我們簡(jiǎn)單看一下。C語(yǔ)是在20世紀(jì)70年代初開(kāi)發(fā)的,也是一種流行的單片機(jī)語(yǔ)言。C可以和單片機(jī)一起使用,因?yàn)镃有處理內(nèi)存分配的能力,也可以執(zhí)行if語(yǔ)句、循環(huán)、數(shù)學(xué)表達(dá)等復(fù)雜功能;匯編是 C語(yǔ)言的另一種選擇。codec是一種比較古老的語(yǔ)言,通常使用特定于設(shè)備的代碼,并且使用匯編工具來(lái)轉(zhuǎn)換它。通過(guò)該語(yǔ)言,用戶可以直接訪問(wèn) CPU,在 CPU中精心調(diào)節(jié)程序,從而實(shí)現(xiàn)精確的計(jì)時(shí)應(yīng)用。Composition提供了更好的 CPU使用量,以及 C不支持的其他指令,比如用特定的 BIT指令執(zhí)行位操作。
(2)MicroPython語(yǔ)言
Python是一種功能豐富的解釋性語(yǔ)言,具有簡(jiǎn)單、清晰、通用的特點(diǎn)。對(duì)于微處理器而言,這些功能也使得語(yǔ)言過(guò)于龐大。但物理學(xué)家 DamienGeorge在2013年“Kickstarter”活動(dòng)的幫助下,能夠把 Python修改為一個(gè)適合單片機(jī)的更小版本 MicroPython。MicroPython代碼是根據(jù) MIT許可開(kāi)放源碼的。這種語(yǔ)言使用了一小部分標(biāo)準(zhǔn) Python庫(kù)在微處理器的裸機(jī)上運(yùn)行。該軟件僅能運(yùn)行256 k的空間和16 k的 RAM,但它被設(shè)計(jì)成與普通 Python完全兼容。
起初,它被設(shè)計(jì)為可以在基于 ARM的系統(tǒng)上運(yùn)行,其中包括 BBC micro: bit, Adafruit Circuit Playground Express和 MicroPython PyBoard,現(xiàn)在還可以用于其他處理器,包括ESP8266和ESP32。MicroPython非常擅長(zhǎng)于復(fù)雜項(xiàng)目的原型設(shè)計(jì)。舉例來(lái)說(shuō),在ESP8266上, IoT項(xiàng)目可以創(chuàng)建一個(gè) IoT項(xiàng)目,只需一些簡(jiǎn)單的函數(shù)調(diào)用,將 MicroPython項(xiàng)目連接到本地Wi-Fi點(diǎn),然后開(kāi)始向 MQTT代理傳輸信息。
(3)Blockly語(yǔ)言
Blockly是一個(gè)受 Google支持的開(kāi)源編程庫(kù),它的目的是通過(guò)拖放塊使代碼更有邏輯。使用者不需要依賴于普通會(huì)話中不能用的單詞和短語(yǔ),而是把這些詞組放入環(huán)境中,從而確定程序如何運(yùn)行。舉例來(lái)說(shuō),不需要編寫 IF語(yǔ)句,用戶就可以把 IF塊拖拽到工作空間中,而且還可以把結(jié)果操作拖拽到 IF語(yǔ)句塊中。
建立了模塊之后,用戶就可以用很多種語(yǔ)言(包括 JavaScript, Python, PHP, Lua和 Dart)導(dǎo)出它的 Blockly代碼。由于 Blockly系統(tǒng)需要一個(gè)特殊的連接,并且不允許不兼容的塊連接,所以 Blockly系統(tǒng)的一個(gè)優(yōu)勢(shì)就是幾乎不可能出現(xiàn)錯(cuò)誤(不是 bug或錯(cuò)誤,只是老的錯(cuò)誤)。雖然這種編程方法可以在許多平臺(tái)上使用,包括 Micro Bit和 Adafruit Circuit Playground Express,但并非為最終的商用產(chǎn)品而設(shè)計(jì)。然而,它在原型設(shè)計(jì)階段很有用,特別是當(dāng)需要概念驗(yàn)證、了解設(shè)備細(xì)節(jié)時(shí)(如寄存器、配置位和 IDE配置)將會(huì)很有用。
(4)Arduino C++語(yǔ)言
雖然 Arduino編程語(yǔ)言被稱為“Arduino編程語(yǔ)言”,但是實(shí)際上 Arduino是用很好的 C++編程的,并且使用了 Arduino特定庫(kù)的子集。Arduino C++與傳統(tǒng) C++的不同之處是:一般的單片機(jī)例程,因?yàn)闃?biāo)準(zhǔn)庫(kù) C++函數(shù)不能在它的功能和內(nèi)存上運(yùn)行。利用 C++這個(gè)小型版本使得該語(yǔ)言更易訪問(wèn),因?yàn)楹芏嘣O(shè)計(jì)者已經(jīng)熟悉了常規(guī) C++。事實(shí)上,通過(guò)使用編譯器,可以用 C++編寫代碼,然后將其解釋為 Arduino可用的代碼。
采用 Arduino C++的優(yōu)點(diǎn)是,它可以在商業(yè)環(huán)境中工作,比大型語(yǔ)言如 Python要快,而且可以高度移植。應(yīng)用通用函數(shù)自動(dòng)處理初始時(shí)在 ARM內(nèi)核中為 Uno編譯代碼。
(5)BASIC語(yǔ)言
BASIC語(yǔ)言最早出現(xiàn)于60年代,隨著個(gè)人電腦在80年代的興起進(jìn)入了它的鼎盛時(shí)期。BASIC (初學(xué)者的通用符號(hào)指令代碼的首字母縮寫)到今天仍在使用,這使得設(shè)計(jì)者能夠把更多的精力集中于硬件,而更注重于軟件。單片機(jī)上使用的BASIC的兩個(gè)例子是PICAXE生產(chǎn)的,Microch使用PICASICSAMP(由Arallax生產(chǎn))和PICAXE。BASIC是原型甚至硬件開(kāi)發(fā)的好語(yǔ)言,但由于其速度慢、能耗低,BASIC應(yīng)避免在商業(yè)產(chǎn)品中使用。
應(yīng)用于單片機(jī)時(shí), BASIC的解譯將導(dǎo)致性能的降低。然而,這種語(yǔ)言的優(yōu)點(diǎn)是高度可移植性。任何用 BASIC編寫的代碼都可用于任何帶有 BASIC解釋器的設(shè)備上。以往使用單片機(jī)時(shí),設(shè)計(jì)者要選擇自己喜歡的平臺(tái),再學(xué)習(xí)它所用的語(yǔ)言?,F(xiàn)在,隨著語(yǔ)言和軟件的發(fā)展,語(yǔ)言可能會(huì)決定設(shè)計(jì)者使用哪種平臺(tái)。假如設(shè)計(jì)者想要尋找一個(gè)特定的功能,如 GPIO支持、網(wǎng)絡(luò)、通過(guò) SSH通信的能力,那么語(yǔ)言和系統(tǒng)的選擇就是找到最優(yōu)開(kāi)發(fā)路徑的重要因素。
以上就是宇凡微單片機(jī)工程師分享的關(guān)于單片機(jī)開(kāi)發(fā)可以用哪些語(yǔ)言的知識(shí)說(shuō)明,如果您還有關(guān)于單片機(jī)的疑問(wèn),或者有單片機(jī)定制需求??梢灾苯雍臀覀兟?lián)系,宇凡微專注于單片機(jī)應(yīng)用方案的開(kāi)發(fā)、MCU定制開(kāi)發(fā),致力于為廣大廠家提供更多新穎的電子產(chǎn)品!
【本文標(biāo)簽】 單片機(jī) 單片機(jī)開(kāi)發(fā)
【責(zé)任編輯】單片機(jī)工程師
ALL RIGHT RESERVED 2022. 粵ICP備17095549號(hào) 技術(shù)支持: 牛商股份 百度統(tǒng)計(jì) 粵公網(wǎng)安備 44030402004503號(hào)