• 正文
    • 1.什么是C語(yǔ)言
    • 2.單片機(jī)有什么特點(diǎn)
    • 3.為什么要用C語(yǔ)言編程
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

單片機(jī)編程,為什么要用C語(yǔ)言

2023/11/21
3243
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

隨著技術(shù)的發(fā)展,電子產(chǎn)品越來(lái)越多,方便了我們的日常生活,大多數(shù)電子產(chǎn)品上都有單片機(jī),而單片機(jī)是通過(guò)執(zhí)行軟件邏輯來(lái)實(shí)現(xiàn)功能的。而單片機(jī)編程最合適的編程語(yǔ)言是匯編語(yǔ)言,但是最常用、最普及的卻是C語(yǔ)言。單片機(jī)為什么要用C語(yǔ)言來(lái)編程?

1.什么是C語(yǔ)言

C語(yǔ)言最早是在1972年的時(shí)候在DEC PDP-11計(jì)算機(jī)上首次跑起來(lái)的,它的設(shè)計(jì)者是美國(guó)人丹尼斯·麥卡利斯泰爾·里奇,他在貝爾實(shí)驗(yàn)室為UNIX操作系統(tǒng)設(shè)計(jì)的。后來(lái)他和同事共同編寫(xiě)了C語(yǔ)言編程標(biāo)準(zhǔn)--K&R。沒(méi)想到日后C語(yǔ)言會(huì)成為廣泛的編程語(yǔ)言并風(fēng)靡全球。而之所以叫做C語(yǔ)言,是因?yàn)樗窃贐語(yǔ)言的基礎(chǔ)上而設(shè)計(jì)出來(lái)的。

UNIX操作系統(tǒng)、Linux操作系統(tǒng)、MySQL等都是使用C語(yǔ)言編程實(shí)現(xiàn)的。

2.單片機(jī)有什么特點(diǎn)

單片機(jī)是可編程器件,他的控制邏輯是通過(guò)軟件來(lái)實(shí)現(xiàn)的。在單片機(jī)之前,控制邏輯是通過(guò)純硬件來(lái)實(shí)現(xiàn)的,受硬件邏輯的約束無(wú)法實(shí)現(xiàn)太復(fù)雜的邏輯。而單片機(jī)是有指令集的,最開(kāi)始通過(guò)使用匯編來(lái)編程,雖然匯編執(zhí)行效率非常高,但是匯編的可讀性和移植性非常差,而C語(yǔ)言正好能彌補(bǔ)匯編的不足。

舉例:MOVC  A, @A+DPTR
功能:將 DPTR+A中的值 作為地址,尋找地址中的內(nèi)容 送到累加器A中

匯編語(yǔ)言舉例

單片機(jī)的寄存器配置。對(duì)單片機(jī)編程其實(shí)就是配置單片機(jī)的寄存器和端口配置,而這都是具有時(shí)許的,需要精準(zhǔn)的控制。

單片機(jī)存儲(chǔ)和執(zhí)行程序需要Flash和RAM,而這些資源非常有限。所以,代碼的占用空間情況非常重要。

單片機(jī)都是有指令集的。學(xué)習(xí)過(guò)單片機(jī)匯編的朋友可能會(huì)有印象,8051單片機(jī)具有111條指令集,并且有7種不同的尋址方式。

#include <stdio.h>
void bubble_sort(int arr[], int len) {
? ? ? ? int i, j, temp;
? ? ? ? for (i = 0; i < len - 1; i++)
? ? ? ? ? ? ? ? for (j = 0; j < len - 1 - i; j++)
? ? ? ? ? ? ? ? ? ? ? ? if (arr[j] > arr[j + 1]) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? temp = arr[j];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? arr[j] = arr[j + 1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? arr[j + 1] = temp;
? ? ? ? ? ? ? ? ? ? ? ? }
}
int main() {
? ? ? ? int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
? ? ? ? int len = sizeof(arr) / sizeof(arr[0]);
? ? ? ? bubble_sort(arr, len);
? ? ? ? int i;
? ? ? ? for (i = 0; i < len; i++)
? ? ? ? ? ? ? ? printf("%d ", arr[i]);
? ? ? ? return 0;
}

冒泡排序的C語(yǔ)言實(shí)現(xiàn)

3.為什么要用C語(yǔ)言編程

前文所說(shuō),單片機(jī)的匯編指令比較難記,可能存在兩種情況:1)更換硬件平臺(tái),這要重新適配指令集、更新寄存器訪問(wèn)地址,比較麻煩;2)換人維護(hù)程序,匯編的可讀性比較差需要較長(zhǎng)的時(shí)間才能理解別人的程序。

而C語(yǔ)言就比較靈活了,正好能彌補(bǔ)匯編的劣勢(shì)。

不需要記憶單片機(jī)的指令集,只需要通過(guò)寄存器的配置就能讓單片機(jī)正常工作;

C語(yǔ)言有指針、數(shù)組、結(jié)構(gòu)體、聯(lián)合體、枚舉等各種類(lèi)型,大大增強(qiáng)了編程的靈活性和程序處理能力;

C語(yǔ)言方便模塊化編程,可以實(shí)現(xiàn)代碼的規(guī)范化。

C語(yǔ)言編程

你用C語(yǔ)言編程嗎?來(lái)評(píng)論區(qū)討論一下吧。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
SY89831UMG-TR 1 Microchip Technology Inc 89831 SERIES, LOW SKEW CLOCK DRIVER, 4 TRUE OUTPUT(S), 0 INVERTED OUTPUT(S), QCC16
暫無(wú)數(shù)據(jù) 查看
CSTCC4M00G53-R0 1 Murata Manufacturing Co Ltd Ceramic Resonator, 2MHz Nom, CERAMIC PACKAGE-3

ECAD模型

下載ECAD模型
$0.96 查看
MCT62SD 1 onsemi 8-Pin DIP Dual-Channel Phototransistor Output Optocoupler, 1000-REEL

ECAD模型

下載ECAD模型
$1.33 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶(hù)資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

玩轉(zhuǎn)嵌入式簡(jiǎn)介,高級(jí)嵌入式工程師,具有多年的嵌入式研發(fā)經(jīng)驗(yàn),主要從事傳感器、控制器、汽車(chē)電子、電機(jī)驅(qū)動(dòng)等硬件和軟件的研發(fā)工作,主要分享單片機(jī)、ARM、嵌入式軟件、嵌入式硬件、電子技術(shù)、半導(dǎo)體、智能硬件等相關(guān)內(nèi)容,創(chuàng)建技術(shù)專(zhuān)欄分享技術(shù)心得和大家一起暢游技術(shù)的海洋。