首頁>Club>
學校裡面學習微控制器,不做流水燈之類實驗,做這些
6
回覆列表
  • 1 # 科技電小二

    C語言是發展趨勢,彙編可以幫助學生熟悉微控制器內部結構。

    首先組合語言和C語言都是程式語言,彙編是一種機器語言直接面對底層,與微控制器底層硬體構架息息相關,相對於C語言,是一門低階語言,C語言面向過程的語言,在編譯執行會轉為彙編在生成微控制器可執行檔案。是一門高階語言,兩種語言各有優缺點。

    一,C語言/彙編優缺點。

    1學習難度。

    彙編因為的理解難度和開發難度比C語言大,所以學習難度大,都是對暫存器操作,學習彙編就要學習這個微控制器的硬體結構和基本組成、儲存器訪問方式、微控制器I/O操作時序、定時計數器、中斷處理、指令系統、定址方式等知識點;而且每個系列晶片的內部寄存地址和暫存器都有差異,維護起來也十分困難。

    2執行效率

    彙編實時性比C語言好,佔用微控制器資源少,生成的執行檔案更小,組合語言程式直接被轉換成機器指令。而C語言編譯過程會先形成彙編,在轉為機器語言。

    3移植性

    C語言比彙編移植性好,程式可讀性比彙編要強。實現相同功能,C語言的程式碼數量會比較短,對於彙編來說,每一種微控制器組合語言都不一樣。所以移植性差。

    C語言透過結構體,指標對映暫存器地址,當有需要時候,只需要簡單更改暫存器地址,或者更改暫存器定義,即可滿足程式和工程的移植。

    4,除錯

    C語言除錯方便,例如STM32開發過程中,可以使用jlink透過SWD進行線上模擬,除錯各語法,語句執行情況,還可以檢視各變數值的變化,很容易就能定位到BUG問題。而彙編除錯困難,很多時候難以很快定位問題。

    二,微控制器開發不一定都能用C語言

    微控制器在上個世紀七十年代開始出現,早期都使用匯編語言進行開發,隨著技術的發展進步,製程工藝快速提升,微控制器的處理速度越來越快,很多微控制器的開發環境都使用C語言編譯,生產二進位制檔案。

    但因產品BOM成本要求,很多的低端微控制器還是OTP一次性燒錄,程式空間小,許多的型號,還是在用匯編進行開發,如義隆,松翰等。

    三,學習彙編並不是無用

    1,大學時學習彙編,有助於理解微控制器系統構架,指令集,和暫存器定址等知識點,也促進對於C語言的指標的用法。

    2,目前的linux開發的部分底層bootload檔案,或stm32的.s啟動檔案就是使用匯編語言的檔案,都使用匯編進行底層引導。修改堆疊,或者程式起始執行的位置,都需要在對應檔案中修改。或者學習UCOS也會涉及修改啟動檔案內相關資料。

    四 單片機發展趨勢:C語言

    當前裝置半導體的成本,隨著製程工藝的提升而降低,越來越多的低端8位微控制器開始從彙編轉向到C語言,微控制器也往更高整合度,更強大功能發展。

    所以學習微控制器不一定要精通匯編,但對彙編有一定了解,對學習微控制器有幫助,只有在某一些功能需求時,可以適當運用匯編。

  • 2 # 電子及工控技術
    第一點微控制器組合語言在執行效程式碼效率非常高

    雖然微控制器組合語言在剛學初期會顯得“晦澀難懂”但也並不是“一無是處”,在有些方面是微控制器C語言所不能企及的,比如組合語言首先在機器碼生成方面其效率要比C語言高20%,所以用匯編語言編寫程式能夠減少佔用微控制器裡的暫存器單元,特別是對於容量小的微控制器而言很重要。總之組合語言要比C語言執行效率更高。

    第二點微控制器組合語言執行速度快

    我們知道任何程式語言最終都要生成微控制器能夠“識別”和執行的二進位制碼,由於組合語言可以直接訪問微控制器的內部暫存器,所以微控制器的組合語言執行速度要比C語言快的多,可以實施精細而準確 的控制,在一些實時控制要求比較嚴格的控制場合一般要求用匯編語言。

    第三點微控制器組合語言能夠幫助有助於瞭解微控制器內部的結構,尤其是暫存器

    由於組合語言的每條指令與微控制器的指令碼是一一對應的,所以透過學習微控制器的組合語言有助於學習微控制器內部結構組成以及它的外設。尤其是對熟悉微控制器內部的各種暫存器有很大的幫助。

    鑑於以上三點我認為,微控制器C語言程式設計和組合語言程式設計各有各的特點,要想學好微控制器並運用好微控制器就要把這兩種微控制器語言都要學好才行。

  • 3 # 光明右使8787

    因為很多廉價的晶片採用私有指令集,沒有C編譯器,只能用匯編。這類芯片價格便宜,用量遠遠超過stm avr stc這些。

  • 4 # KINGE

    目前很多主流微控制器都是支援C語言編寫,廠商會提供相應的C語言庫,編譯器也大都支援C語言開發,C語言上手快學習成本低,只是應用層面的話其實C語言就差不多夠用了。但是使用C編寫最後還是會被編譯器變成彙編程式碼,實質還是在寫彙編。彙編效率高,對機器直接操作,更加底層,所以想深入的學習微控制器,彙編是不可不學的,並且一般最底層設定都是彙編寫的,還有不少底層設定是無法用C去呼叫或者改寫的,這個時候看懂彙編和使用匯編就很重要了。

  • 5 # 深空深處

    現在常見的用匯編的一些場合,往往有嚴格的時間要求。比如中斷,特別是arm的快速中斷,還比如一些對時間要求非常高的測控場合,可能要求微秒甚至納秒級別的響應速度。這些應用在程式設計的時候有可能會一條指令的執行時間也會考慮。還有一些重複進行的運算函式,如果重複的次數多,又對時間有要求,那函式的執行時間又需要一條一條指令的扣。

    還有一些場合,應用的cpu ,比如有些pic微控制器,只有1k甚至512位元組的空間,rom空間比較小,c語言最佳化後的編譯程式碼,可能還是不如純粹的彙編精簡,這就需要彙編。

    還有一些其他場合也是對程式碼空間有要求,比如linux啟動的bootloader,還有PC上常見的常見檔案系統mbr程式碼,也需要用匯編來編寫。

    此外對於單純的學習來講,組合語言跟硬體的關係更密切,更直接,學習彙編更有利於理解微控制器的結構。

  • 6 # 和不同

    要看是什麼微控制器。

    32位微控制器

    如STM32。用C語言很合適,絕大多數工作都可以而且應該用C或者更高階的語言完成。只有極少數對效能或程式碼空間要求高的部分需要用匯編語言實現。

    這類微控制器在實際工作中也很少用到彙編,C語言基本能滿足開發各種功能的需求。

    8位微控制器

    如51系列,部分AVR。效能低,C編譯器也不夠標準。尤其因為歷史上C編譯器較昂貴,所以在這些平臺上有大量組合語言開發的積累。

    另外,低端微控制器往往實現的是簡單邏輯,用匯編語言開發慣了的人,也沒有太大動力改用C語言。

    這樣以來,學校課程中使用匯編語言也就正常了:既體現了一定的歷史慣性、也有助於更深入的理解微控制器系統。

    從自己學習來說,組合語言瞭解一下還是不錯的。深入學習還是選C,以後微控制器上直接用匯編的會越來越少。

  • 中秋節和大豐收的關聯?
  • 運動會讓膝蓋磨損嗎?怎麼防止受傷?