單片機編程用C語言還是彙編?

2021-01-09 騰訊網

單片機是一種可編程器件,單片機的出現使硬體設計變得更為簡單,產品的功能也更強大,而程序就是單片機的靈魂。目前功能稍微複雜一點的電子產品,都是以單片機為核心,再加以不通的外設電路實現不通的功能需求。單片機的編程可以通過彙編語言和C語言來實現。

1彙編編程的特點

彙編是一種更接近於硬體底層的低級語言。硬體在編程時總線和地址非常重要,在彙編語言中,一般用助記符來替代機器指令的操作碼,用標號代表操作數的地址,所以彙編語言和機器指令之間存在著唯一對應的關係,這就導致了不通系列的單片機其彙編指令集是完全不通的。這樣做是比較麻煩的,因為更改了單片機或者升級老產品之後,原有的彙編代碼難以跨平臺移植,只能再重新編寫。所以,彙編的移植性非常差,由於是直接操作機器指令,所以在可讀性上也非常差。這是彙編語言的兩個最大的缺點,但是其優點就是執行效率非常高。從方便的角度上來說,彙編方便了硬體,但對工程師卻不友好。

2C語言編程的特點

在前幾年使用彙編編程的人還是挺多的,現在使用彙編的人原來越少,即使是寫驅動的人也不完全使用彙編而是使用彙編和C語言結合的方式。單片機的C語言編程具有兩個最大的優點。

第一個優點:易於移植

有過單片機C語言編程的同行都有這樣的經歷,在編程時,首先要在初始化中配置單片機的寄存器,配置完之後的代碼不再頻繁的和寄存器打交道,所以使得C語言的層次非常清晰,在移植代碼時,只需要根據新的平臺修改一下寄存器的配置部分就可以了,功能主體部分幾乎不用修改。這也就是很多優秀程式設計師所倡導的當文檔層次化編程的原因,每個功能塊都對應一個C文件和H頭文件,在移植時只需要把這兩個文件拷走即可,方便了移植。

從這個方面來講,完全可以拋開單片機的寄存器配置來實現編程,這方面做的比較好的如STM32的官方庫編程和CMSIS等。

第二個優點:易於閱讀

由於C語言通過寄存器和硬體驅動/接口建立關係,編程者不用再去記憶枯燥的指令,而且C語言編程的層次化、模塊化編程也大大提高了代碼的可讀性。相比於彙編,C語言可以用更少的代碼實現更複雜的功能,而且還更易於理解。這也是C語言越來越受歡迎的原因。

3C語言對比彙編的優勢

通過前面的描述可以看得出來,C語言佔有更多得優勢,C語言易於跨平臺移植、C語言易於理解、C語言易於延續。總之,從編程得角度C語言更受程式設計師們得歡迎。

相關焦點

  • 單片機程序C語言與彙編語言混合編程
    中C語言與彙編語言混合編程本文引用地址:http://www.eepw.com.cn/article/201611/322505.htm1.C語言函數和彙編語言函數相互調用在這個示例中C語言函數main()調用彙編語言函數get_rand()以得到一個隨機數;彙編語言函數get_rand()首先調用C語言的標準庫函數rand()得到一個整型隨機值,然後用調用C語言函數mult()的方法把這個隨機值乘以main()函數傳遞給自己的實參,並把乘積值返回給
  • PIC單片機C語言編程教程(1)
    > 語言來開發單片機系統軟體最大的好處是編寫代碼效率高、軟體調試直觀、維護升級方便、代碼的重複利用率高、便於跨平臺的代碼移植等等,因此 C 語言編程在單片機系統設計中已得到越來越廣泛的運用。這就是為什麼前面所有章節中的的示範代碼全部用基礎的彙編指令實現的原因,希望籍此能使讀者對 PIC 單片機的指令體系和硬體資源有深入了解,在這基礎之上再來討論 C 語言編程,就有水到渠成的感覺。
  • C語言能夠實現單片機功能,為什麼還要使用彙編呢?
    如今C語言確實很強大,在嵌入式編程當中應用廣泛,但是為什麼還要學習彙編語言,難學又不易理解?首先彙編語言和C語言都是程式語言,彙編是一種機器語言直接面對底層,與單片機底層硬體構架息息相關,相對於C語言,是一門低級語言,C語言面向過程的語言,在編譯執行會轉為彙編在生成單片機可執行文件。是一門高級語言,兩種語言各有優缺點。一,C語言/彙編優缺點。1學習難度。
  • 為什麼C語言是最適合單片機編程的高級語言!
    為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不是不能,而是不合適。
  • 最適合單片機編程的高級語言,除了C語言,別無選擇!
    單片機為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python,VC等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不能不能,而是不合適。
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    單片機的C語言: 單片機軟體設計使用C語言作為編程開發軟體,採用模塊化的程序結構,設計了按鍵模塊程序、RFID模塊程序、日曆時鐘模塊程序、GPRS模塊程序、顯示存儲模塊程序等,並編寫系統主程序,將五個程序模塊組合在一起,實現單片機控制系統的整體功能。
  • C語言和彙編語言是什麼?他們之間可以有怎樣的合作?為你解析
    C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的程式語言;儘管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平臺。
  • 單片機中C語言延時函數
    單片機C語言延時程序計算2009-11-02 22:15單片機C語言延時程序用C語言寫出來程序非常的簡練,它是一種模塊化的語言,一種比彙編更高級的語言,但是就是這樣一種語言也還是有它不足之處:它的延時很不好控制
  • PIC單片機C語言程序設計(8)
    即可用MPLAB IDE7.40 對PIC 單片機建立彙編語言或C 語言的源程序、創建項目(project)、對源程序進行彙編(使用彙編語言時)或編譯(使用C 語言時),彙編或編譯通過後,會生成目標碼。hex 文件。有了目標碼。hex 文件,就可對PIC 單片機編程(燒寫)和對源程序進行模擬調試了。
  • PIC單片機C語言程序實例
    用彙編語言編程,直接、簡捷,可有效地訪問和控制各種硬體設備,如存儲器、I/O口等,目標代碼簡短、佔用內存少、執行速度快、語句效率高。然而,由於彙編語言是面向機器的語言,不同廠家或同廠家不同系列的單片機。其彙編語言指令系統往往互不相同,即通常所說的「不兼容」。
  • C語言與彙編語言混合編程應遵守的規則
    ARM編程中使用的C語言是標準C語言,ARM的開發環境實際上就是嵌入了一個C語言的集成開發環境,只不過這個開發環境與ARM的硬體緊密相關。
  • 單片機C語言延時分析
    標準的C語言中沒有空語句。但在單片機的C語言編程中,經常需要用幾個空指令產生短延時的效果。這在彙編語言中很容易實現,寫幾個nop就行了。
  • 單片機c語言教程:建立你的第一個KeilC51項目
    KEIL uVISION2 是眾多單片機應用開發軟體中優秀的軟體之一,它支持眾多不一樣公司的MCS51架構的晶片,它集編輯,編譯,仿真等於一體,同時還支持,PLM,彙編和C語言的程序設計,它的界面和常用的微軟 VC++的界面相似,界面友好,易學易用,在調試程序,軟體仿真方面也有很強大的功能。本站提供的單片機c語言教程都是基於keilc51的。
  • PIC單片機asm與C混合編程
    另外,PICC 的彙編編譯器要求輸入原程序文件的擴展名是「*.as」,而MPASM 預設認定的原程序以「*.asm」為擴展名。在基於PICC 編譯環境下開發PIC 單片機的C 語言應用程式時基本無需關心其彙編編譯器,除非是在混合語言編程時用彙編語言編寫完整的彙編原程序模塊文件。
  • 單片機C語言模塊化編程方法
    初學者往往搞不懂如何模塊化編程,其實它是簡單易學,而且又是組織良好程序結構行之有效的方法之一.本文將先大概講一下模塊化的方法和注意事項,最後將以初學者使用最廣的keil c編譯器為例,給出模塊化編程的詳細步驟。
  • ARM中C和彙編混合編程及示例ARM中C和彙編混合編程及示
    在嵌入式系統開發中,目前使用的主要程式語言是C和彙編,C++已經有相應的編譯器,但是現在使用還是比較少的。在稍大規模的嵌入式軟體中,例如含有OS,大部分的代碼都是用C編寫的,主要是因為C語言的結構比較好,便於人的理解,而且有大量的支持庫。
  • 51單片機教程之基礎編(基於C語言)
    大家好,我是陳濱,本人是去年9月份開始學單片機,到現在一年多了,現在本人基本掌握了單片機編程,開始深入學習彙編語言了。很多初學者有很多的疑惑,我究竟是先學C語言,還是彙編語言?其實我告訴你,本人認為,先學C語言!為什麼呢?C語言是目前使用最廣泛的中級語言,就連現在的windows7也是C語言編寫的,C語言易讀性好,無需對單片機內部結構十分熟悉即會編程,可移植性高,便於維護。C語言只有32個關鍵字,9種控制語句,而且編譯器提供了很多函數庫,使用十分方便。
  • stm32用什麼語言編程
    一種計算機語言讓程式設計師能夠準確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的行動。   程式語言俗稱「計算機語言」,種類非常的多,總的來說可以分成機器語言、彙編語言、高級語言三大類。電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。
  • 自學編程第1節:程式語言有哪些,什麼關係?彙編C/C++,JAVA簡介
    首先,謝謝大家點擊閱讀獵奇哥的編程系列教程,後期慢慢補充,詳細介紹C語言,C++語言編程的方方面面,儘量幫助大家能夠儘量簡單的學會C++編程核心入門知識。總章節數待定,視內容的更新情況。說起編程,最早的是彙編語言,這種語言大家通常叫做低級語言,做一個程序,需要非常多的指令和代碼,完成的卻是一個非常簡單的功能,程式設計師的工作量非常大,當然,那個時期,電腦的功能也沒有現在的這麼強大,彙編對於當時來說,也是夠用。
  • ARM中ADS環境下C語言和彙編語言混合編程及示例
    稍大規模的嵌入式程序設計中,大部分的代碼都是用C來編寫的,主要是因為C語言具有較強的結構性,便於人的理解,並且具有大量的庫支持。但對於一寫硬體上的操作,很多地方還是要用到彙編語言,例如硬體系統的初始化中的CPU 狀態的設定,中斷的使能,主頻的設定,RAM控制參數等。