{eval=Array;=+count(Array);}
單片機(jī)是一種可編程器件,單片機(jī)的出現(xiàn)使硬件設(shè)計變得更為簡單,產(chǎn)品的功能也更強(qiáng)大,而程序就是單片機(jī)的靈魂。目前功能稍微復(fù)雜一點的電子產(chǎn)品,都是以單片機(jī)為核心,再加以不通的外設(shè)電路實現(xiàn)不通的功能需求。單片機(jī)的編程可以通過匯編語言和C語言來實現(xiàn)。
匯編是一種更接近于硬件底層的低級語言。硬件在編程時總線和地址非常重要,在匯編語言中,一般用助記符來替代機(jī)器指令的操作碼,用標(biāo)號代表操作數(shù)的地址,所以匯編語言和機(jī)器指令之間存在著唯一對應(yīng)的關(guān)系,這就導(dǎo)致了不通系列的單片機(jī)其匯編指令集是完全不通的。這樣做是比較麻煩的,因為更改了單片機(jī)或者升級老產(chǎn)品之后,原有的匯編代碼難以跨平臺移植,只能再重新編寫。所以,匯編的移植性非常差,由于是直接操作機(jī)器指令,所以在可讀性上也非常差。這是匯編語言的兩個最大的缺點,但是其優(yōu)點就是執(zhí)行效率非常高。從方便的角度上來說,匯編方便了硬件,但對工程師卻不友好。
在前幾年使用匯編編程的人還是挺多的,現(xiàn)在使用匯編的人原來越少,即使是寫驅(qū)動的人也不完全使用匯編而是使用匯編和C語言結(jié)合的方式。單片機(jī)的C語言編程具有兩個最大的優(yōu)點。
第一個優(yōu)點:易于移植
有過單片機(jī)C語言編程的同行都有這樣的經(jīng)歷,在編程時,首先要在初始化中配置單片機(jī)的寄存器,配置完之后的代碼不再頻繁的和寄存器打交道,所以使得C語言的層次非常清晰,在移植代碼時,只需要根據(jù)新的平臺修改一下寄存器的配置部分就可以了,功能主體部分幾乎不用修改。這也就是很多優(yōu)秀程序員所倡導(dǎo)的當(dāng)文檔層次化編程的原因,每個功能塊都對應(yīng)一個C文件和H頭文件,在移植時只需要把這兩個文件拷走即可,方便了移植。
從這個方面來講,完全可以拋開單片機(jī)的寄存器配置來實現(xiàn)編程,這方面做的比較好的如STM32的官方庫編程和CMSIS等。
第二個優(yōu)點:易于閱讀
由于C語言通過寄存器和硬件驅(qū)動/接口建立關(guān)系,編程者不用再去記憶枯燥的指令,而且C語言編程的層次化、模塊化編程也大大提高了代碼的可讀性。相比于匯編,C語言可以用更少的代碼實現(xiàn)更復(fù)雜的功能,而且還更易于理解。這也是C語言越來越受歡迎的原因。
通過前面的描述可以看得出來,C語言占有更多得優(yōu)勢,C語言易于跨平臺移植、C語言易于理解、C語言易于延續(xù)。總之,從編程得角度C語言更受程序員們得歡迎。
以上就是這個問題的回答,感謝留言、評論、轉(zhuǎn)發(fā)。更多電子設(shè)計、硬件設(shè)計、單片機(jī)等內(nèi)容請關(guān)注本我們:玩轉(zhuǎn)嵌入式。感謝大家。
開發(fā)單片機(jī)學(xué)什么語言好?主流的單片機(jī)開發(fā)主要有兩種語言,即匯編語言和C語言,下面我來說說我的理解。
1、匯編語言,對于初學(xué)者最好掌握,因為它更貼切地表達(dá)單片機(jī)寄存器間的邏輯轉(zhuǎn)移關(guān)系,讓你理解單片機(jī)更加透徹。
2、C語言,主流的開發(fā)語言,程序設(shè)計起來更加容易,不需要太深入了解單片機(jī)的內(nèi)部結(jié)構(gòu)即可開發(fā)。
3、其實,編譯軟件是把C語言轉(zhuǎn)化為匯編語言,再轉(zhuǎn)為單片機(jī)能讀懂的二進(jìn)制文件即HEX文件,然后燒錄到單片機(jī)里。
隨著技術(shù)的發(fā)展,單片機(jī)變得越來越模塊化,目前用C語言來開發(fā)的居多,這兩種語言各有各的優(yōu)缺點點,不能說誰好誰不好。
其實,語言本身是沒啥好糾結(jié)的,一個優(yōu)秀的設(shè)計師并不是敲代碼的,而是設(shè)計整個程序的架構(gòu),這才是核心。試想一下,假如程序的邏輯結(jié)構(gòu)設(shè)計得不清晰,你再熟練各種語言又有何用呢?
C語言是主流,匯編語言己經(jīng)基本淘汰了,c++在圖形界面開發(fā)上有優(yōu)點。一般只作啟動文件。如果想學(xué)STM32的話,可以參考我的專題,從配置到源碼分析全方位介紹。
目前大多都用C語言,有較高的編寫和硬件性能效率; 匯編語言則更能發(fā)揮底層性能,但相對初學(xué)者相對晦澀難記; 如果只是自學(xué)玩玩或者快速做驗證則可了解下Arduino,對非專業(yè)編程人員很友好,甚至國內(nèi)都有好幾家公司推出了圖形化界面,拖拖鼠標(biāo)就可以編寫程序。
往今后走,大趨勢是硬件的軟件化,編程會越來越普及,越來越面向編程者而不是硬件,其中Python就以易學(xué)、能在前人肩膀上快速開發(fā)著稱,在小型單片機(jī)上的MicroPython發(fā)展得也很快,不排除今后Python能成開發(fā)主力的可能; 而FPGA則是硬件描述語言,不算是傳統(tǒng)編程,能提供強(qiáng)大的實時輸出效果,如果今后以單片機(jī)為專業(yè)的話可以多關(guān)注。
社會行業(yè)從古至今都是越分化越細(xì)的,新技術(shù)也不斷與各行業(yè)融合交匯,除作為愛好外,為自己盡早定個細(xì)分方向能走得更好。
匯編相當(dāng)于磚頭蓋房子,c相當(dāng)于買半成品。所以匯編能蓋各種各樣的,c卻只能用廠商已經(jīng)實現(xiàn)的。當(dāng)然買房子總比自己蓋要快很多。[呲牙]
c語言。
除此之外,你有的選嗎?
有人會說匯編。個別函數(shù)用匯編可以,整個項目用匯編開發(fā)效率太低。
想學(xué)單片機(jī)開發(fā),你的問題基本不存在。
如果覺得c語言難,建議你放棄單片機(jī)開發(fā)。
每一種單片機(jī)有官方自己的匯編語言指令集和編譯器,熟練掌握匯編語言的運用,有助于對該單片機(jī)的系統(tǒng)架構(gòu)、尋址方式、地址分配深入的了解,對編譯的優(yōu)化,效率的提高大有益處;
再進(jìn)階的運用C語言,工作效率事半功倍!
10
回答4
回答7
回答0
回答4
回答10
回答5
回答6
回答4
回答1
回答