痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 15798|回復: 50

請問如何開始學單晶片 c 語言?

  [複製鏈接]
發表於 2012-2-19 09:42:47 | 顯示全部樓層 |閱讀模式
以前學單晶片 51 使用組合語言,到目前大概看的懂,也稍能寫些簡單的程序,最近老闆有意加用另一單晶片 MSP430 ,看他的指令與51類似應不難學,實際是功能太多很難懂,市面組合語言書很少﹝有買一本,聽說全國就只有一本﹞,其內容也只是簡單提到功能,市面上的資源都是c 語言較多,但怎麼看c 語言範例會有智障的感覺,完全沒有概念,組合語言還有指令查詢與註解,還能慢慢學,c 語言就真的搞不懂,該如何開始學單晶片 c 語言?
發表於 2012-2-19 15:18:33 | 顯示全部樓層
先找一本C語言的入門書開始
從最基礎的邏輯判斷(IF-ELSE結構等),迴圈,陣列,指標,結構等依序來學習

再來你要去弄一套IAR編譯器,目前MSP430只能用這套編譯器來開發
這樣才能去下TI官網的範例來看,瞭解在MCU上是如何撰寫C語言
TI提供的說明文件相當多,應該可以提供不少幫助

 樓主| 發表於 2012-2-19 15:47:10 | 顯示全部樓層
yaingc 發表於 2012-2-19 03:18 PM static/image/common/back.gif
先找一本C語言的入門書開始
從最基礎的邏輯判斷(IF-ELSE結構等),迴圈,陣列,指標,結構等依序來學習

C語言的入門書、TI官網的範例、IAR編譯器也有了,也看過了,就是無法了解
void main(void)
{........
for (;;)
  {
&= ~,|=........等等一些符號的意義,他不像組合語言有固定指令,可依程序需求與進度,查詢適當的指令撰寫,現在問題就是不知如何能像組合語言踏出第一步。

另外不知是否有 c 語轉組語的軟體。
發表於 2012-2-19 16:05:39 | 顯示全部樓層
想請問你用的是那一本入門書?

我之前看的是大學在用的C 程式設計藝術,
現在在看的是the c programming language,當成手冊來查詢語法

C語言也有固定的語法
例如說這行C &= B其實就是C = C & B
其中的&就是作位元的AND運算
~是作補數運算,|是作OR運算等

如果要看轉成組語的話,把程式下載到430後
打開View選單中disappembly,就可以看到轉成組語的結果
 樓主| 發表於 2012-2-19 16:26:42 | 顯示全部樓層
yaingc 發表於 2012-2-19 04:05 PM static/image/common/back.gif
想請問你用的是那一本入門書?

我之前看的是大學在用的C 程式設計藝術,

我是用這本
1.jpg
發表於 2012-2-19 17:15:39 | 顯示全部樓層
MSP430 的 launchpad 很便宜, 大概100台幣, 俺買了10個玩, 像雖然沒有除錯器功能, 不過看看他原廠的 HELLO WORLD, 以你的能力, 10分鐘應該可以開始改寫 C, 如果你老闆有買除錯器, 那就更容易上手了, C 不比 ASSEMBLY 難, 兩個都實際摸過的話, 剩下要花的功夫是設計算法.

參考這個看看這個吧

http://ishankarve.blogspot.com/2011/11/msp430-hello-world-led-blink-program.html
 樓主| 發表於 2012-2-19 18:43:35 | 顯示全部樓層
xiaolaba 發表於 2012-2-19 05:15 PM static/image/common/back.gif
MSP430 的 launchpad 很便宜, 大概100台幣, 俺買了10個玩, 像雖然沒有除錯器功能, 不過看看他原廠的 HELLO  ...

10分鐘應該可以開始改寫 C ?大大你太看的起我了,51組語才懂皮毛,現在加msp430 都快暈了,還要c :sam22
偶才學不久,又非本科出身,是靠關係才有頭路的,不敢動用到公司,想說自已多努力才不會太難看。哀!:sam22
發表於 2012-2-19 18:53:28 | 顯示全部樓層
本帖最後由 antlu 於 2012-2-19 06:55 PM 編輯

我以前也是同樣的情形!! 55歲開始學C 發現真的很好玩(我是說用在微控),從無到有的確辛苦一點,所以入門就很重要!! 有人帶更重樣, 我的方式是 買一組對岸的 學習套件 約1500元台幣,她內含150個程式,還有C語言的講課錄影帶,還有一大堆的實驗東西,好像叫 陳X電子的網站有賣,一年多以來做了不少玩具,學習從模仿開始... 那個X生電子的套件到目前我還沒有學完,但是已經覺得學到很多了, 倒數計時器 時鐘 搖搖棒 馬桶漏水警報 溫度計 溫度時鐘 我早已經忘記組合語言了,但是C真的很好用, 我想 C的程式用在 89S52 改一改或許可以用在其他MCU上 如PIC16XXX  在痞酷網上面得到許多同號的幫忙 如 LEGION YSC... 加油!!

書本建議一本 C&C++完美經典 我搞不清楚就翻書參考...
發表於 2012-2-19 18:58:01 | 顯示全部樓層
其實學C比較好,上手以後不管是51核心,430核心,或是ARM都能寫
只用純組語蠻累人的
 樓主| 發表於 2012-2-19 20:54:19 | 顯示全部樓層
確實學C比較符合潮流,其實像學習套件這種學習板也買了試了,就是把實驗程序下載到板子執行,改改一些數據玩玩,呆就呆在跳不出那框框,想照自已意思改改,不向組語有指令可查用哪個,c 語就呆住了:sam21
C&C++完美經典這本有空我也去書店瞧瞧。
發表於 2012-2-19 22:05:17 | 顯示全部樓層
本帖最後由 ysc 於 2012-2-19 10:14 PM 編輯

感覺上這應該分兩個層次來說,
先將MPS430 HARDWARE MANUAL看熟,完全了解MPS430硬體結構與內建周邊控制方式(大概也是特殊暫存器),再來了解軟體寫法,這樣會比較有效率。

至於用C或組合語言這又是另一回事,說不定有些應用還要C+組合語言一起連結,所以兩者不可偏廢。

至於C語言符號所代表的意義,建議以所使用的C語言編譯器為準,好好熟讀所附說明文件,C雖然是共通語言,但不同版本編譯器的語法與保留字並不盡相同,就像同為51組合語言編譯器,不同廠商出的就有不同的宣告方式,連Pseudo Instruction、MACRO格式等都不一樣。

您若原本熟悉組合語言,那不妨先用組合語言寫些MPS430小程式,用來測試硬體是否正常(也算是熟悉MPS430),等真正可以RUN起來之後,遇到運算較複雜的應用,再以C來寫程式,這樣循序漸進應該很快就可以進入狀況。


 樓主| 發表於 2012-2-19 22:40:40 | 顯示全部樓層
ysc 發表於 2012-2-19 10:05 PM static/image/common/back.gif
感覺上這應該分兩個層次來說,
先將MPS430 HARDWARE MANUAL看熟,完全了解MPS430硬體結構與內建周邊控制方 ...

就是MPS430硬體結構與內建周邊控制比51、pic等複雜太多了,況且也是菜英文一族,才粉吃力,真的羅馬不是一天造成的。
發表於 2012-2-19 22:43:26 | 顯示全部樓層
本帖最後由 bitboc 於 2012-2-19 10:48 PM 編輯

老實說要學好這個,最重要的一步是問老闆會了有沒有加薪 ,
有加薪的話,我想什問題你都有辦法克服!

往上看了下,發現你也許是新進人員,上面可能不適用,
只能說你c語言先看懂吧,總要先認識字才能寫詩詞!
發表於 2012-2-19 23:13:33 | 顯示全部樓層
bitboc 發表於 2012-2-19 10:43 PM static/image/common/back.gif
老實說要學好這個,最重要的一步是問老闆會了有沒有加薪 ,
有加薪的話,我想什問題你都有辦法克服!

bitboc大;
   加薪問題恐怕有困難,這年頭保祝飯碗已經不易了!!
  學好 C 解決問題或許會加薪也說不定!!
  C搞熟了!! 上班問題解決,下班還可以做玩具解悶!!
發表於 2012-2-20 01:18:05 | 顯示全部樓層
本帖最後由 ysc 於 2012-2-20 01:41 AM 編輯
lotor 發表於 2012-2-19 10:40 PM static/image/common/back.gif
就是MPS430硬體結構與內建周邊控制比51、pic等複雜太多了,況且也是菜英文一族,才粉吃力,真的羅馬不是 ...


對!這才是問題所在......
先將MPS430內部結構摸熟才是當務之急,不了解內部結構要如何寫軟體來控制它?

我在1999年導入H8/300H時,光HARDWARE MANUAL就800多頁,整整K了好幾個月才完全看完,做出第一片成品時...........已是半年之後!

雖然很辛苦,但往後的回收是甜美的,因為當時所下的心力,往後10年都是靠這個在吃飯!
發表於 2012-2-21 13:22:35 | 顯示全部樓層
antlu 發表於 2012-2-19 11:13 PM static/image/common/back.gif
bitboc大;
   加薪問題恐怕有困難,這年頭保祝飯碗已經不易了!!
  學好 C 解決問題或許會加薪也說不定!!

antlu 大:
  當寫程式變職業,回家可能也懶得搞了!
  所以我佩服你做這麼多小玩意出來,
  實在是創意無限!讚!
發表於 2012-2-21 19:12:18 | 顯示全部樓層
bitboc 發表於 2012-2-21 01:22 PM static/image/common/back.gif
antlu 大:
  當寫程式變職業,回家可能也懶得搞了!
  所以我佩服你做這麼多小玩意出來,

BITBOC大:
    我純粹是好玩!! 比起專業的同好們,算是 "小小咖",因為沒有"長官"的壓力,所以進步緩慢!! 沒有"同事"的支持,所以只能用洞洞板和最早的DIL包裝去組裝,沒有"多金"的贊助,所以為了外觀總是想破頭腦,美學基礎不足又急著完工上傳分享,只好"哩哩拉拉"的外觀和"有一搭沒一搭"的功能...大家就包涵包涵了...
發表於 2012-2-21 21:04:11 | 顯示全部樓層
C或組合語言其實都不難,視個人喜好順手就好
不過若本身在組合語言上並沒有太過深入或較為上手的話
C算是初學或實用都很容易上手的東西
不過語言這種東西比較麻煩的地方就是花多少時間得多少成果

若C要較為精進的話,一般大都會有上幾本參考及相對時間學習
而大部份的人都是買了一兩本書,看了幾頁便放下說難,
但難嗎,其實一點都不難,不過要花掉相對的時間才能有所精進
請加油吧,先把第一頁看到最後一頁,然後再重看兩遍,會發現有進步的
發表於 2012-2-22 00:49:00 | 顯示全部樓層
legion 發表於 2012-2-21 09:04 PM static/image/common/back.gif
C或組合語言其實都不難,視個人喜好順手就好
不過若本身在組合語言上並沒有太過深入或較為上手的話
C算是初 ...

legion大:
   "先把第一頁看到最後一頁,然後再重看兩遍," 這一動作是天下第一難做到的事情,我手上一本8051一本C++完美經典都只是當"參考書"翻翻而已!! 因為"記性差"翻到後面前面已經忘光光...
發表於 2012-2-22 11:28:33 | 顯示全部樓層
antlu 發表於 2012-2-22 12:49 AM static/image/common/back.gif
legion大:
   "先把第一頁看到最後一頁,然後再重看兩遍," 這一動作是天下第一難做到的事情,我手上一本805 ...

一般要去比較精研一個物件時,即使是8051這種東西
大部份手上都會有個3-4本作為參考類的書籍,
而C之類的,大部份有個5-6本也算是正常
8051我手上大概有4本,C相關類書籍大概也有10本以上
這些都是以前工作時有空自己去學的,念書時也沒這種東西存在
所以沒有什麼難事,怕的是自己沒動手去作,antlu大,記性差就多看幾遍就可以了
MCU也好,C也好,有時還是要從根本處下手的,不然會容易掉進死胡同的
發表於 2012-2-22 19:57:14 | 顯示全部樓層
legion 發表於 2012-2-22 11:28 AM static/image/common/back.gif
一般要去比較精研一個物件時,即使是8051這種東西
大部份手上都會有個3-4本作為參考類的書籍,
而C之類的, ...

LEGION大:
   感謝指導,前天去資源回收場已經沒有看到 GPS了,上次那一台黃色的可以用嗎?
發表於 2012-2-22 20:08:52 | 顯示全部樓層
建議參考"8051 單晶片原理與應用使用C語言"--作者:黃嘉輝--台科大圖書股份有限公司--
書號:ISBN 986-129-289-6
它會附光碟及電路板, 個人認為淺顯易懂, 是一不錯的入門書.
 樓主| 發表於 2012-2-22 21:41:25 | 顯示全部樓層
經各為先進暸暸後,可能因學組語時太用心,被困在那圈圈內,無法用另一概念去思考,大概是一定要自己
動手去作,遇有問題時就參考範例,再從其範例中體驗其內容,進而增進對c 語的認識與功力。
以上是新手對各為先進的建言小小體會,不知是否正確,請各為先進不吝指教,看各為先進對科技都滿有研究,不輸對岸中國大陸才對,不然現在 x 天拍賣都快成為 x 寶的代銷處了。
發表於 2012-2-22 22:12:29 | 顯示全部樓層
本帖最後由 xiaolaba 於 2012-2-22 10:41 PM 編輯
lotor 發表於 2012-2-19 06:43 PM static/image/common/back.gif
10分鐘應該可以開始改寫 C ?大大你太看的起我了,51組語才懂皮毛,現在加msp430 都快暈了,還要c  ...


那你有所不知, 俺認識 DIY 玩 MCU 或 C 的人, 99% 都不是寫程序的為業的. 其中有70%, 不是電子科系畢業, 另外30%是學機械的, 但是都玩得嚇嚇叫. 唯一相同的是, 他們都是理工科背景, 對DIY有興趣.

如果要體驗C的話, 拿一台PC, 有打印口的, 裝個免錢的UBUNTU, 在安裝好免錢的 GCC編譯器, 直接玩玩點亮LED的遊戲, 俺也是這樣開始學了 ASM 與 C, 然後推廣到其他的 MCU / CPU, 就一理通百理明, 手到拿來. 不過還是那句, 進門容易, 精進難在個人, 後來要學習的算法設計, 原理比實際編碼來的重要, 要看的書會越來越多, 不過今天有 INTERNET, 俺超過十年不買書了. 希望對你有幫助.

看你的項目或應用範疇, C 和 ASM 同樣重要, 等你需要用到時候, 大概就會領略到為何有此說法, 這不是俺說的, 是俺聽說完, 遇到實際後的體會. 老美寫的一本教科書關於HC05的, 當時還不流行C, 因為CODE SIZE以幾K以下算的, 沒有FLASH, 只有PROM, 有EEPROM已經很了不起, 純粹ASM做即時控制的系統設計, 對每個BYTE和每個CLOCK CYCLE 都要斤斤計較, 就需要ASM的高手才能做到. 但是今天, C和必要時搭一點ASM, 是最好的做法, 可以兼顧速度與CODE SIZE, 並且有較好的可移植性, 如果純粹寫個跑馬燈玩玩, 那就看不出必要性了. 如果日後有機會你回顧自己用心設計過的算法或解決問題源碼, 可能你會覺得, 哇, 為何當時能寫出這麼高明的CODE, 會覺得自己以前為何如此聰明.

用力, 加油, 必有成績, 不要計較薪酬, 等到實力養成, 機會來了, 高薪自然來, 除了技術以外, 多留意各行業發展, 多看新聞, 多多連絡人脈. 搞技術是一時的, 搞業務才是長遠的, 學習做業務, 業務必須對人, 每件事情都看成業務或推銷, 如何讓各人達到期望同時達成個人目的, 就好比做業務. 有一定技術根基搞業務, 等於練就九陽神功, 有機會出招就會彈指之間輕而易舉.
發表於 2012-2-23 00:32:42 | 顯示全部樓層
lotor 發表於 2012-2-22 09:41 PM static/image/common/back.gif
經各為先進暸暸後,可能因學組語時太用心,被困在那圈圈內,無法用另一概念去思考,大概是一定要自己
動手 ...

既然是學組合語言時太用心.....那恭喜您了,因為很多人視組合語言為畏途,熟組合語言是您的一大優點啊!

我常說C真的就是void,這個void非常有禪意,沒有硬性規定的格式,卻是甚麼都有了!

建議先不要在意C,先以組合語言將您要發展的平台建構起來,有個基本模型之後您才能做些簡單測試,以此好好摸熟MPS430硬體功能,只要摸熟了MPS430,應用時系統規劃與演算法比較重要,用哪種程式語言只是Coding的工具罷了。

說不定等您摸熟之後,全部以組合語言也可以完成整個案子。

發表於 2012-2-23 18:27:43 | 顯示全部樓層
C 語言可以一般可藉由直接編譯產生對應的組合語言程式碼檔,以GCC為例
範例:gcc -S test.c -o test.s

其中的 test.s 就是一般的組合語言程式碼,用一般文書編輯器看就知道了,以前常混合著用~


 樓主| 發表於 2012-2-24 16:50:00 | 顯示全部樓層
很多人視組合語言為畏途,但是我卻是視 c 語言為芒途,其實組合語言只是看懂會用啊!繼續努力才是正途!
另外燃眉之急是希望能有高手幫忙,我現有 c 語言範例﹝約100行內﹞,真希望能有相同內容的組合語言,兩種都能有詳細中文註解,如此相互對照這樣應該比較適合我這菜英文的新手,當初 51 也是這樣學起的。
而要看轉成組語,把程式下載後打開View選單中disappembly,可看到轉成組語的結果,但是有些c 語理的定義、連結載入、函數等等,disappembly 中組語的結果,有些好像看不到。
msp430的資料翻譯後,好像沒有很詳細,只是提到有何功能,並未有相關應用示範,得要在其各種範例中去了解,問題是自己需要的是適合哪一個範例,說白的就是【不知自己的問題在哪裡】。

發表於 2012-2-25 00:24:28 | 顯示全部樓層
lotor 發表於 2012-2-24 04:50 PM static/image/common/back.gif
很多人視組合語言為畏途,但是我卻是視 c 語言為芒途,其實組合語言只是看懂會用啊!繼續努力才是正途!
另 ...

disappembly已經不是原始程式,要看得懂不是那麼容易,尤其以C編譯之後又disappembly,看得懂的話那真是天才,遇到這種狀況我寧可自己再寫一次程式。

MPS430資料建議看原廠英文版,不要看翻譯的,看翻譯的有時會越看越糊塗,技術文件的用語不過那幾個字,不會很難的。

 樓主| 發表於 2012-2-25 11:02:01 | 顯示全部樓層
MPS430資料建議看原廠英文版,不要看翻譯的,那我不只呆了還傻了,我是菜英文一族的新手耶!
燃眉之急是希望能有高手幫忙,我現有 c 語言範例﹝約100行內﹞,真希望能有相同內容的組合語言,兩種都能有詳細中文註解,如此相互對照這樣應該比較適合我這菜英文的新手,期待高手出手→f74879@yahoo.com.tw
發表於 2012-2-25 13:53:57 | 顯示全部樓層
lotor 發表於 2012-2-24 04:50 PM static/image/common/back.gif
很多人視組合語言為畏途,但是我卻是視 c 語言為芒途,其實組合語言只是看懂會用啊!繼續努力才是正途!
另 ...

你要對照看的disassembly的話, C COMPILER要用直譯, 不要開啟 [優化 OPTIMISATION]
COMPILER還可以選擇保留 ASM 輸出, 裡面應該有 C 的對照註解, ASM 的後面有註解, 大概位置是 C源碼的哪一句

不過, 以你自己說的程度, 看這個也會不容易的
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-4-28 03:12 PM , Processed in 0.096530 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.