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