回覆列表
  • 1 # 使用者2458114238191884

    問題1,不需要用C語言表示微控制器語言(機器語言),在用相應軟體編譯你編寫的程式時,編譯軟體會將你的程式"翻譯"成"機器語言"(就是你所說的微控制器語言),用來燒錄到微控制器中.C語言就是C語言,只不過相對於機器語言他更容易讀懂,方便編寫.

    在很多年以前,微控制器開發用的是組合語言,在燒寫微控制器之前要自己對照"微控制器機器語言表"將自己的程式翻譯成"機器語言",全是數字串,那是鍾痛苦,現在都有編譯軟體搞定了,比如你用keil,編譯之後,點模擬,就能看見對應的彙編語句和機器語句,機器語句在微控制器資料手冊上有對應的碼.

    問題2.不是所有的微控制器都支援位運算,比如51支援位運算,在C語言中如果你定義了有關位的運算,編譯器在"翻譯"的時候就會翻譯成對應的機器語言,這時由於51支援為運算,生成的程式碼就少.如果使用了不支援位運算的微控制器,那麼編譯器就會使用其他方法實現你定義的運算,相對之下程式碼要多一些,可能要用很多條語句才能完成.

    標準的C語言本來是不支援位定義的,只能用位域的方式定義,像"bit"這樣的定義是keil中擴展出來專門為像51這樣的支援位定義的微控制器使用的,這樣的C語言叫做非標準C,keil中使用的C語言叫做 keil C語言,

    之所以使用C來開發是為了方便,之所以在開發中允許使用位定義,是因為相容(因為51支援)

    使用C語言來開發,就去盡情的發揮C語言的優點,這些語言是怎麼轉化到微控制器中的,就是編譯器的事情了.

    記住"只要支援就去用,這就是最佳化"

    但這種最佳化的程式不方便移植.

  • 中秋節和大豐收的關聯?
  • 那英有首歌?