標題: 單片機是不是所有芯片都可以用C語言編寫? [打印本頁]

作者: czd175711    時間: 2019-6-16 00:06
標題: 單片機是不是所有芯片都可以用C語言編寫?
我在論壇上面見到的代碼基本都是用C來寫的,那是不是所以芯片都可以用C來寫,而且匯編語言用在哪里?它們兩者的有什么優(yōu)缺點?小白在線提問....

作者: xing1954    時間: 2019-6-16 04:31
這個要看是否有編譯與下載器。
作者: xianfajushi    時間: 2019-6-16 06:25
就我的一知半解來說都是可以用C語言寫的,匯編只是最初期的一種語言,編譯器最終都轉(zhuǎn)為二進制碼給單片機去執(zhí)行,單片機只能識別二進制命令,匯編的缺點是閱讀不便,C語言的有點是接近人的自然語言習慣,語言發(fā)展到后面就越接近人的自然思維習慣。
作者: zhang1116quan    時間: 2019-6-16 15:27
匯編一般用在啟動文件
作者: 帶智帶勇    時間: 2019-6-16 22:10
匯編語言可以對某一位進行操作
作者: 15936529590    時間: 2019-6-17 10:57
在單片機一般都不寫匯編語言,直接用c語言就行了
作者: 15936529590    時間: 2019-6-17 11:07
一般情況下是可以的,但有時候c語言和單片機不匹配
作者: yzwzfyz    時間: 2019-6-17 14:50
計算機只能識別機器碼,即0101,根據(jù)這些有序排列的機器碼的含義(即硬件指令=這些機器碼),來運行程序。任何語言的程序最終都必須轉(zhuǎn)成機器碼,否則計算機不認識。
但0101的機器碼太不方便記意了。于是就用方便記意的語句代替它,這就產(chǎn)生了兩個問題:
1、用什么語句替代機器碼?
2、誰把它再譯回到機器碼?
計算機是外國人發(fā)明的,自然用了英文的語句,不過又帶來了一個新的問題:
一個語句替代多少條機器碼指令?這是回答你問題的關鍵了:
匯編語言:一個語句替代一條機器碼指令,因此它最接近機器碼,最靈活,也最難掌握。
C語言:一個語句替代一條或多機器碼指令,因此它效率高,但不靈活。
至于“誰把它再譯回到機器碼?”,編程平臺幫你完成了,最常用的“翻譯”是KELL。
明白上述的道理后,就會明白:
C是由若干條匯編語句組成的。但這些,用C的人看不出來,因為C不關心匯編,就沒有必要展示給你看,不過想看也看得到,每次對C程序編譯時,也會生成匯編代碼。
由于C建立在匯編的基礎上,所以它的規(guī)矩多且嚴格,稍不小心,平臺就不認識,C語言強力地依賴庫函數(shù)(各種子程序),但通俗易懂易掌握。
匯編則只依據(jù)CPU的指令系統(tǒng)寫程序,天馬行空,任君游。但要求程序員有很強的邏輯、數(shù)學水平。
例如:開方。對C語言是一句話的事,而匯編,如你沒有很好的數(shù)學基礎,是根本無法想像得出來的。不過最終的機器碼目標還是一致的。雖然C是一語話的事,也是由匯編寫而來的,只不過不需要你寫,而是前輩們用匯編寫好了,做成了C函數(shù)庫,你直接引用就可以了。
記。河嬎銠C、單片機只認識機器碼!

作者: 保羅喬治    時間: 2019-6-17 15:22
一般情況是可以的
作者: huskiezxl    時間: 2019-6-17 22:36
#在這里快速回復#匯編語言是一種用文字助記符來表示機器指令的符號語言,是最接近機器碼的一種語言。其主要優(yōu)點是占用資源少、程序執(zhí)行效率高。但是不同的CPU,其匯編語言可能有所差異,所以不易移植。
作者: huskiezxl    時間: 2019-6-17 22:37
匯編語言是一種用文字助記符來表示機器指令的符號語言,是最接近機器碼的一種語言。其主要優(yōu)點是占用資源少、程序執(zhí)行效率高。但是不同的CPU,其匯編語言可能有所差異,所以不易移植。

C語言是一種結構化的高級語言。其優(yōu)點是可讀性好,移植容易,是普遍使用的一種計算機語言。缺點是占用資源較多,執(zhí)行效率沒有匯編高。

匯編語言是低級語言,在編寫程序的時候會把根據(jù)不同的情況指定使用不同的尋址方式,能夠?qū)?nèi)存和CPU里的通用寄存器直接操縱。不同的單片機系列會有不同的匯編語言
而C語言是高級語言,可以實現(xiàn)跨平臺。編寫程序無需指定CPU的指令執(zhí)行情況,一段程序可以在不同體系結構的計算機上使用
作者: egypt    時間: 2019-6-18 09:37
準確地說,不是。

因為 C 編譯器做的事情,在某些情況下你并不是非常非常了解。

在處理不可重入的快速中斷時,如果用 C 做了實現(xiàn),但是編出來的代碼如果不在匯編下檢查一下,可能這個中斷時序的性能就不夠了。如果一頭往編譯器上研究優(yōu)化,可能方向都偏了----還不如直接匯編實現(xiàn)呢




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1