1. 程式人生 > >肺腑之言-寫給喜歡單片機的初學者

肺腑之言-寫給喜歡單片機的初學者

電子 成就感 它的 do while 原理 也不會 備註 個人 abcd

寫點東西吧,也算是自己的一個總結 。
?? 首先是兩個字 “喜歡”!!
??? 一個東西 光有10分鐘的熱度是不夠的。從事單片機工作,就意味著你以後是和枯燥的程序、調試、亂碼、 未知的軟硬件錯誤、熬夜、臉上的豆豆……聯系在一起。(有點誇張,哈哈!)
??? 如果你選擇了這種生活,並且確定你有一種精神能指引你一路走到底,至於是什麽精神,只有你自己知道。 是滿屏幕的0101,還是一串串胡亂的ABCD,還是成功後的成就感,還是天生俱來的對電子類東西的癡迷,還是喜歡別人在外面花天酒地……卻喜歡獨坐電腦面前,攻克技術的顛峰。不需要理由,世界上就有這樣一種人。那麽確定了上面的之後,讓我們開始吧!單片機也叫做單板機、單片微型計算機。麻雀雖小,五臟俱全,那麽如果你學過計算機組成原理,我相信你應該能更好的理解單片機的內部結構。如果沒有學過,也不要緊,那就拿小麻雀開刀,再一層層自下而上的學習。
??? 剛開始學單片機的時候,看到厚厚的一本書,不要一咬牙要一下子把書全部看完。看得仔仔細細明明白白。 先看看目錄,無非就是介紹單片機的歷史,然後它內部的組成原理,然後是指令,然後就是接口。先說歷史,知道51單片機是現在資料最豐富,最適合上手拿來開刀的就是了。不要覺得書上的知識老。這都N多年前的了,現在是不是都不一樣了。兼容這個詞的意思是:比如你用ATC51寫的程序,拿到ATS51、52 STC 都能用,只是後續的片子在一些地方更加完善,功能更強大。
??? 比如:在書上老掉牙的2051上的MOV A,#00H 用到其他51系列上也是一樣的。你看它的片子的介紹上,寫了一句“完全兼容51系列單片機” 那麽OK 。別管那麽多,只管用就是了。我發覺我廢話多了,這不知道寫到那去了。。抽跟煙,繼續。。。
??? 上面的意思是說:面前是一坐山很高,然後我就一咬牙,慢慢爬吧,我不信我爬不上去了,或許爬到一半就退縮了,退而再攻之。
??? 我拿個測量儀來,噢,原來這山總共7000米,半山腰有個亭子,到那是3500米,剛開始那1000米坡度很小 2000米的時候有個茅房(^_^) 6000米的時候有個美女正在洗澡,山頂有個和尚廟。行,心中有了底,上!!
??? 剛開始的時候初學一定要用匯編,可能大家也看到了,關於C和匯編的討論,各有各的說法,我個人覺得初學者,完全沒有必要去追求什麽飄逸的風格,就用笨拙的匯編。雖然它像一頭大苯熊一樣,但是,當你能和大笨熊親切的交流,屈駕自如的時候,再去和漂亮的兔子MM 鴛鴦戲水,會更加的得心應手。?
??? 匯編剛開始你會覺得很煩,就是在那MOV 過去MOV 過來。JB、JC、 JNB 、JNC 、DJNZ 很難記,不像C 一個IF 一個DO WHILE 就搞定的事。但是,用匯編你能更加了解一條指令在CPU內存的執行過程,能更加親切的和P0 、P1 、P2 、P3 的每一個口線交流,不需要C 的屏蔽底層,而是直接的就和底層親密接觸。這裏有人要說我什麽什麽的了, 還是那句話:個人意見,僅供參考。在寫延時程序的時候,DJNZ 是雙周期指令,比如12M的晶振,那麽,一條指令是1US, 那麽你要精確的知道自己這段延時程序能延時多少US 或者多少MS ,那麽你對51單片機內部的指令、周期,對以後寫有嚴格時序操作的程序就更加得心應手。比如,看到一個片子的PDF 數據總線要拉低多少MS ,地址總線要拉高多少US ,等待周期要等待多少US/MS ,那麽,不要懷疑,自己寫指令搞定它,成功以後你會發現你從最底層的了解了一個片子是怎麽傳送數據,怎麽通信。這樣的經歷對你以後再接觸其他 子的時候是莫大的幫助。像關於書上的內容,指令不用記得那麽死,或者說完全不需要記。需要的時候,馬上查,在查的過程中會更加加深你的印象(說點丟人的話 JC JB JNB JB 這些 指令我到現在都從來不記,我又不應付考試,我書隨時就在旁邊 用的時候去翻就是了。)?
??? 這也就提到了練習,程序和指令不要只看不用,實踐是檢驗真理的唯一標準。實踐出真知,這都是老話了,不過用在單片機的學習上是太貼切了,單片機本來就是實踐性很強的。像我在學校的時候,每次實驗課 都認真的做,抓住每次上機的機會。板子很貴,自己買不現實,而上機的時候能接觸到的每一次都很寶貴。LED流水燈、十字×××通燈這些程序很基礎。在一次一次的小程序成功的過程中,你會更加喜歡上單片機,並且堅定繼續為之不離不棄的決心。
??? 熟能生巧,我還記得我剛開始的時候,經常是把指令寫錯,把跳轉的標號寫錯。經常用系統的關鍵字,變量未定一存儲空間就用等等等等。。 但是一次又一次錯誤下來,得到的是程序的正確性的大大的提高。在這裏我建議剛開始先多讀別人的程序,而且是完整的,備註多的,格式規範的。從最開始就養成良好的編程風格,而不是隨意的亂添亂加 胡亂的復制粘貼。
??? 看懂別人程序裏的每一句代碼的意思,為什麽要加這條,這條指令的作用是什麽?如果不清楚,馬上翻書去查,在查的過程中,更加加深對這條指 或者這段子程序的用法的深刻的記憶。下次自己用的時候才能像自己一樣的拿來得心應手,這也是為什麽要選擇51系列的單片機。因為它的示例代碼網上鋪天蓋地,而且高手也不會吝嗇的把初學要用的代碼共享,得到這些代碼的途徑是很方便的。得到的有用的信息也是最多的,像 1302 、1602 、DS18B20 、LED 、串口 、DA /AD 、常用的接口與51的驅動程序, 匯編版本的 、C 版本的都有。不要覺得都是幾年前的東西,都是人轉來轉去,老掉牙的東西,先都拿來消化掉,再為自己所用。?
??? 大家也許也發現了,在百度裏找一些程序的時候看到一版的匯編代碼,但是沒有一點註釋,2個字:痛苦! 所以,為了方便大家,也為了以後你能方便別人,剛開始寫程序就要習慣,給程序寫備註,為了別人能看懂 像一個大的工程,都是團隊合作。你幾千的代碼而且沒有備註,別人幾千的代碼也沒備註,那好吧,先花個1天的時間把程序看懂了,再幹其他的吧。

肺腑之言-寫給喜歡單片機的初學者