微信公眾號 | strongerHuang
單片機(jī)有很多叫法,MCU(Microcontroller Unit,微控制單元),又叫微控制器等。
隨著物聯(lián)網(wǎng)的普及,單片機(jī)現(xiàn)在的需求越來越大了。同時(shí),隨著單片機(jī)性能和資源的增強(qiáng),開發(fā)單片機(jī)的語言也越來越多了。
那么,你知道單片機(jī)目前支持哪些主流開發(fā)語言嗎?
1、匯編語言說明:匯編語言是一種底層(低級)的、與硬件緊密相關(guān)的編程語言。它直接映射到機(jī)器語言,允許程序員直接控制硬件資源。
舉例:用匯編語言寫一段51單片機(jī)(AT89S52)點(diǎn)燈程序。
ORG 0x0000 ; 程序起始地址
MOV P1, #0x00 ; 初始化P1口為低電平
MAIN:
MOV P1.0, #1 ; 點(diǎn)亮LED,將P1.0置為高電平
ACALL DELAY ; 調(diào)用延時(shí)子程序
MOV P1.0, #0 ; 熄滅LED,將P1.0置為低電平
ACALL DELAY ; 調(diào)用延時(shí)子程序
SJMP MAIN ; 無限循環(huán)
DELAY:
; 延時(shí)子程序
MOV R2, #50
DELAY_LOOP:
DJNZ R2, DELAY_LOOP
????RET
2、C語言說明:C語言是最常用的一種用于單片機(jī)的開發(fā)語言,也是一種高級編程語言,具有較好的可移植性和可讀性。對于單片機(jī),通常使用嵌入式C來進(jìn)行開發(fā)。
舉例:用C語言寫一段STM32單片機(jī)點(diǎn)燈程序。
#include?"stm32f4xx_hal.h"
int main(void)
{
HAL_Init();
SystemClock_Config();
__HAL_RCC_GPIOA_CLK_ENABLE(); // 啟用GPIOA時(shí)鐘
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 配置GPIO引腳
GPIO_InitStruct.Pin = GPIO_PIN_5; // 假設(shè)LED連接到GPIOA的引腳5
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽輸出
GPIO_InitStruct.Pull = GPIO_NOPULL; // 無上下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // 點(diǎn)亮LED
HAL_Delay(1000); // 延時(shí)1秒
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 關(guān)閉LED
HAL_Delay(1000); // 延時(shí)1秒
}
}
3、C++語言說明:C++是一種基于C語言的面向?qū)ο缶幊陶Z言,盡管在單片機(jī)領(lǐng)域使用相對較少,但還是一些現(xiàn)代的單片機(jī)也開始支持C++。
舉例:用C++語言寫一段STM32單片機(jī)點(diǎn)燈程序。
int?main(void)
{
LED_Class LED1(GPIOF, GPIO_Pin_7, RCC_APB2Periph_GPIOF);
LED_Class LED2(GPIOF, GPIO_Pin_8, RCC_APB2Periph_GPIOF);
LED1.Init();
LED2.Init();
while(1)
{
LED1.Open();
LED2.Open();
Delay(10);
LED1.Close();
LED2.Close();
Delay(10);
}
}
當(dāng)然,這里定義的類和調(diào)用的函數(shù)接口,請看我之前推送的文章《單片機(jī)能用C++開發(fā)嗎?》。
4、Python語言說明:Python雖然不常用于傳統(tǒng)的單片機(jī)編程,但一些微控制器如MicroPython和CircuitPython支持Python語言,使得開發(fā)更加簡化。
舉例:用MicroPython語言寫一段單片機(jī)點(diǎn)燈程序。
import?machine
import time
led_pin = machine.Pin(2, machine.Pin.OUT) # 假設(shè)LED連接到引腳2
while True:
led_pin.on() # 點(diǎn)亮LED
time.sleep(1) # 延時(shí)1秒
led_pin.off() # 關(guān)閉LED
time.sleep(1) # 延時(shí)1秒
說明一下,這里代碼使用的MicroPython,而不是標(biāo)準(zhǔn)的Python。確保你的開發(fā)板支持MicroPython,并已正確安裝和配置。在實(shí)際的嵌入式開發(fā)中,你可能還需要考慮硬件配置、時(shí)鐘設(shè)置以及其他底層細(xì)節(jié)。
5、其他編程語言
除了以上匯編、C語言、C++、Python語言,其實(shí)還有極少一些用Java語言,但JAVA需要運(yùn)用虛擬機(jī),需要在高性能的單片機(jī)上運(yùn)行。
還看到有用一種叫Ada的編程語言,據(jù)說主要用在在一些航空航天和軍事應(yīng)用中得到廣泛應(yīng)用,具有強(qiáng)大的靜態(tài)類型檢查和并發(fā)編程支持。
除了上面說到的匯編、C語言、C++、Python語言,你還想到有哪些?或者你用過哪些編程語言開發(fā)單片機(jī)?