單片機是用什麼編程的?

Alien丨ET

單片機編程用到的編程語言:

C語言和彙編語言

開發環境

MDK

IAR

入門書籍

學好單片機,下一步的學習方向直接就可以切入到嵌入式,相比單片機嵌入式更加註重帶有操作系統的編程,要求更高一些,有空閒時間可以補充下linux的學習。


大學生編程指南

這個問題要從兩方面來說:第一是單片機是用什麼編程環境(開發平臺)編程?第二是單片機是用什麼編程語言編程?

我們分別來看看:

一、單片機的編程環境

單片機的編程環境說起來就太多了,基本上每個單片機生產廠家的單片機都有自己的編程環境,並且不同廠家的單片機編程環境都有各自的特色,說到各自的特色,我們應該就會明白,正是因為這些各自的特色,使得不同廠家的編程環境的操作有很大差異,這給我們在用不同單片機開發時增加了很大麻煩。

大多數的編程環境都支持彙編和C語言,但是也有個別的編程環境只支持彙編語言,這是我們選擇單片機開發環境時需要注意的。

還有一些編程環境需要再安裝一些插件才能完全使用,這也是我們需要注意的。

目前比較通用的單片機開換環境有兩種:MDK和IAR。

隨著這些年基於ARM技術得CORTEX系列芯片的大規模推廣,MDK也應用也是越來越多,MDK的前身是KEIL C,對於從事單片機開發比較長時間的人來說keil c應該不陌生,它最初是51單片機最好的編程環境,後來ARM收購了它,並在此基礎上加以增強,現在基本支持ARM全系列芯片的開發。

還有就是IAR,據我所知IAR是目前支持單片機和ARM種類最多的編程環境,從51,AVR,PIC,MSP430到ARM,基本上支持所有的通用單片機。


但是需要說明的是,雖然IAR支持非常多的單片機,但是隻是說IAR這個軟件,具體到某一種單片機,它是有不同的安裝包的,比如要開發AVR單片機,就需要安裝基於AVR單片機的安裝包。所以IAR實際上對每一種的那片集都是一個單獨的開發環境,只是他們的界面和功能選項都是基於IAR這個平臺的,僅此而已。

二、單片機的編程語言

相對於單片機的編程環境,單片機的編程語言就沒有那麼多選擇了。目前單片機的編程語言主要是彙編語言和C語言。其中C語言佔據了絕大部分的編程選擇。

關於彙編語言的優缺點、C語言的優缺點網上講的已經太多了,我在這裡就不在重複了。

只說明一點,相比較而言,C語言可能是最好的單片機編程語言。


老馬識途單片機

首先回答一下單片機是用什麼編程的?後邊詳細會舉例子!

單片機編程的語言即可以用C,也可以用彙編

用匯編的優勢主要是程序可以被編程者優化,這樣就可以絕對可控,程序的安全性和執行速度受編程者水平限制,不過總的執行速度較c語言快,代碼佔程序存儲器的容量較C語言小。這樣彙編程序更適合程序存儲器和數據存儲器較小的老式單片機。但是彙編程序畢竟是機器語言的彙編助記符。所以存在指令難記,指令功能弱的缺點,造成學習困難。

C語言優勢與缺點正好與彙編語言相反,C語言雖然畢竟是一種高級語言,具有較好的學習性,幾乎不必記憶指令,學習容易,而且編譯時的優化由編譯器管理,一般不受編程者水平限制。由於機器優化的侷限性,C語言總的執行速度較

彙編語言慢,代碼佔程序存儲器的容量較彙編語言大。這樣,C程序更適合程序存儲器和數據存儲器較大的新式單片機。

初學者建議先使用C語言快速入門,再去研究彙編,優化程序設計。

下邊給大家分別用匯編和C編寫~LED燈的循環移動

彙編

org 00h

start:mov r0,#8;

mov a,#1111110b;

loop:mov p1,a

rla

call delay

djnz r0,loop

jmp start

DELAY:MOV R5,#20;延時子程序,延時0.2秒

D1:MOV R6,#20

D2:MOV R7,#248

DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

end

C

#include

void main()

{

int i;

i=0xfe;

while(1)

{P1=i;

i--;

delay100ms();

if(i==0)

i=0xfe;

}

}

void delay100ms(void)//

{

unsigned char a,b,c;

for(c=19;c>0;c--)

for(b=20;b>0;b--)

for(a=230;a>0;a--)

}

2018.3.12

電氣電子視界


電氣電子視界

研究生期間做了一個機床設計的項目,其中電機控制用的是單片機系統,因此從頭學習了單片機。單片機編程用匯編和C語言的比較多。其中C語言屬於比較常用比較基礎的語言,很多人大學期間都學,也相對比較容易學。而彙編語言屬於底層語言,沒有C語言直觀,指令語言簡單,表述起來比C語言要繞一些。所以,目前很多人都直接選擇C語言。

但是當年,儘管我已經有比較好的C語言基礎,我的導師仍然堅持讓我用匯編來做。所以,我又花時間學習了彙編語言,也因此體會到了導師的苦衷。

第一,彙編並不難學,語句非常簡單,也不多,沒有任何封裝,你想實現任何功能都必須一句一句寫出來,這樣會讓你對程序語言有很深的理解。

第二,彙編直接對應到單片機的內部組成,可以通過自己的語言直接控制某個針的輸入輸出,可以管理堆棧,可以真正把對計算機的理解抽象化到0和1,而編程就是控制這些0和1。

所以,如果想學單片機,不妨花一點時間學習一下彙編語言。不需要真正編多長,能理解能看懂就行。


高校人才真經

單片機

編程的語言

既可以用C,也可以用匯編。
用匯編的優勢主要是程序可以被編程者優化,而不是由編譯器優化,這樣就可以絕對可控,程序的安全性和執行速度受編程者水平限制,不過總的執行速度較

C語言

快,代碼佔程序存儲器的容量較

C語言

小。這樣,彙編程序更適合程序存儲器和

數據存儲

器較小的老式單片機。但是,彙編程序畢竟是機器語言的彙編助記符,所以存在指令難記,指令功能弱的缺點,造成

學習困難


C語言

的優勢與缺點正好與彙編相反。C語言畢竟是一種高級語言,具有較好的學習性,幾乎不必記憶指令,學習容易,而且編譯時的優化由編譯器管理,一般不受編程者水平限制。由於機器優化的侷限性,C語言總的執行速度較

彙編語言

慢,代碼佔程序存儲器的容量較

彙編語言

大。這樣,C程序更適合程序存儲器和

數據存儲

器較大的新式單片機。
建議

初學

者先使用C語言

快速入門

,然後再研究

彙編語言

,優化

程序設計


互聯網達人李先生

單片機編程可以用匯編也可以用C語言。彙編速度快、佔空間小、但不好維護、可讀性不強、重利用率不高等特點。C語言則相反。 還有一點就是C語言可開發所有單片機類型,但不同類型單片機彙編是不一樣的。還有一點,在工作中用什麼語言開發不是你定的,是由公司定的。公司要考慮成本問題,能用最便宜的單片機實現所需要的功能這是老闆最喜歡的。所以單片機資源較少,又要實現較多功能時,有時用C語言生成的代碼大小超了,單片機都裝不了,那隻能用匯編了。


分享到:


相關文章: