今晚又是寫程序 睡不著 寫點東西吧 也算是自己的一個總結 首先是兩個字 “喜歡”!! 一個東西 光有10分鐘的熱度是不夠的 從事單片機 就意味著你以后是和枯燥的程序 調試 亂碼 未知的軟硬件錯誤 熬夜 臉上的豆豆 什么什么的聯系在一起(有點夸張 哈哈) 如果你選擇了這種生活 并且確定你有一種精神能指引你一路走到底 至于什么精神 只有你自己知道 是滿屏幕的 0101 還是 一串串胡亂的ABCD 還是 成功后的成就感 還是天生俱來的對電子類東西的 癡迷 還是喜歡別人在外面花天酒地 卻喜歡獨坐電腦面前 攻克技術的顛峰 不需要理由 世界上就有這樣一種人 不需要理由 那么確定了上面的之后 讓我們開始吧 單片機 也叫做單板機 單片微型計算機 麻雀雖小 五臟俱全 那么如果你學過計算機組成原理 我相信你應該能更好的理解 單片機的內部結構 如果沒有學過 也不要緊 那就拿小麻雀開刀 再一層層 自下而上的 到我們所用的PC 剛開始學單片機的時候 看到厚厚的一本書 不要一咬牙 要一下子把書全部看完 看得仔仔細細 明明白白 先看看目錄 無非就是 介紹單片機的歷史 然后它內部的組成原理 然后是指令 然后就是接口 先說歷史 知道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 版本的 不要覺得都是幾年前的東西 都是人轉來轉去 老掉牙的東西 先都拿來消化掉 再為自己所用 大家也許也發現了 在BAIDU 里找一些程序的時候看到一版的匯編 代碼 但是沒有一點注釋 2個字 痛苦 所以 為了方便大家 也位了以后你能方便別人 剛開始寫程序就要習慣 給程序寫備注 為了別人能看懂 像一個大的工程 都是團隊合作 你幾千的代碼 沒有備注 別人幾千的代碼也沒備注 那好吧 先花個1天的時間把程序看懂了 再干其他的吧 程序中像子程序的說名 入口參數 出口參數 內存的分配 關鍵語句的 單條備注 標號的頂格 代碼的 縮進 等等 良好的編程風格絕對會讓你在以后的工作和學習過程中事半功倍 ;------------------------- ;****子程序 ;-------------------------
next: mov a,th0 ;//讀取計數值TH0 swap a ;//高4位與低4位對換 mov r1,a ;//保存到R1 anl tl0,#0f0h ;//取TL0高4位,低4位忽略不計 寫了一些小程序之后 那么 就是做完整的小實驗 參照別人的程序比如寫一個接口芯片的驅動 不再是點亮一個燈 又點另外一個燈 這種的完整的驗證型的實驗非常重要 不要希望上課的時候老師給你的程序能讓你突飛猛進 只有自己不斷的做實驗 寫程序 才能讓自己學得更快 像買到的板子 都有完整的代碼 這對于學習是很好的資料 因為它能所見即所得 不再是書上 的紙上談兵 那么程序是正確的 看懂了以后 自己可有試著改以下里面的某 個地方 你能找到它的核心的那幾條 或一段代碼 那么說明你對這段程序的理解已經更上一層樓了 初學者買板子很重要 而板子上的示例代碼 和 技術支持 更重要 通過這個板子你能接觸到一個平臺 供你學習 那么這個板子就是值的 如果板子買來了就閉門造車 那么 板子再好 不是件好事 功能旋目的板子 強大大可以怎么樣怎么樣的板子 沒有必要去買 當你強大到要用到它上面的什么 激光 設想頭的時候 我想你也已經不會再用那塊板子開發東西了 基本的 液晶 數碼管(是個很強大的東西 像我不喜歡什么軟件仿真 在有問題的地方 設置個斷點 程序執行到這一步 把值讀出來 顯示到LED上 簡單方便 )常用的51的接口有就夠了 說到自己做實驗板 買來的板子都有完整的電路圖 對于電子基本共不扎實的朋友 買來后看懂原理圖 再慢慢的 自己做板子好一點 買了同一種板子的 能有個交流區 是最好的 各個問題和程序 拿出來大家交流 能起到很大的作用 也會少走很多彎路 目前這個正在籌劃當中 我會盡快和站長聯系 開個專區 供大家交流和學習用 上面提到了 基本功 這才記起。。(不好意思^_^) 像搞單片機 分幾種 上層的 和底層的 上下通吃 的 不過剛開始的 都不是很復雜 我建議大家上下通吃 還是那句話 有不懂的 馬上查資料 電容 3級管 2級管 放大 整流 穩壓 濾波 上拉 /限流電阻 還有Protel 99 SE 自己畫電路圖 等等 這些基本功 隨著學習的深入 都要一點一點的累積起來 不懂不要緊 問題是不能讓一個問題一直捆饒著你 要有一種精神 不搞懂它 我就不罷休的精神 那么我相信任何困難都不會成為阻止你成功的絆腳石。 又說到那來了 夜深了 瞌睡來了 ** 單片機 要天天碰 調程序就到板子上結合著硬件環境調 像DA AD 我剛開始學的時候那一章的內容根本都沒看 直到后來要做個東西 需要AD轉換 去翻了下TLC1543D 的PDF 然后看了下 它的時序 去網上找了下 示例代碼 然后寫的程序 像書上的 ADC0809 DAC0832 我是在用了其他轉換片子后 回過頭去看的時候 發現這片子缺陷確實太多 然后再去看它的程序和使用方法 很簡單 這里的意思并不是說 書上的 ADC0809 DAC0832 不重要 而是說大家學一個東西的時候 如果能結合板子學的話 或者說能馬上用到 那么是最好 成效也是最快的 實踐的力量確實是不能小窺的 而現在普遍的大學生的高分低能 學軟件工程的 讓用VB 寫個小程序 不會寫 單片機90多分的 寫個LED連單片機是具體的單片機的什么樣子都沒見過 找工作的時候一大堆的獎 一大堆的廢話。拿出自己做的成品 隨意的和招聘的人聊各個單片機的優缺點 正確的說出每種常用的片子的用途 用法 證明自己的實際的動手能里 找工作是難 但是分人。我相信 在大學實驗室里呆2年 的人 和在大學里 談2年戀愛的人 打2年網游 看2年小說 聊2年QQ 打2年CS的人的結果絕對是不一樣的 亂78糟的寫了 很多 大家能看完不甚感激 如果有什么地方不對的 還請大家多多指正 我也是個學習者 深切的感到剛學單片機的時候的困惑 希望寫下的東西 對大家能有少許的幫助 寫的不好 請大家見晾了 在最后這里引用下 <周立功寫給年輕人的一封信>我覺得寫的很好 是一種鼓勵 和激勵 人才在那里 人才就是有一種精神為之從不放棄的人 .就是將來的你.大家加油!!!! 周立功寫給年輕人的一封信
作為過來人思前想后,我感到完全有責任將發自心底的感受傳遞給年輕一代,“一個企業家心靈深處渴望優秀人才的卓越追求和深層次的嘆息、痛苦和感受”。您們千萬不要等到畢業求職時才覺得自己能力太差,世界上從來就沒有后悔藥。當然,如果您現在看了我寫的這篇文章可能還不算晚,因為您還有機會在以后的歲月里奮起直追——“亡羊補牢,尤未為晚”。對于現在剛進入大學的學生,您應該更加珍惜這美好的求學機會,因為眨眼之間幾年就過去了,您很快就會感到來自全社會生存競爭的壓力,您面臨的對手再也不僅僅是您身邊的同學,今天您在班上的成績的確是前幾名,但一走到社會上去才感到是多么地脆弱而又多么地不堪一擊。 在面試大多數本科生時,我僅僅是詢問了一些有關MCS-51 系列單片機的基本原理,但卻幾乎很少有人能夠完全答對,簡直是五花八門。很多作為一個即將畢業的自動化專業本科生,至今還不知道單片機是這個專業的核心基礎,難道不可悲嗎?您的水平不高我完全心中有底,其實我只要求這些學生能夠掌握單片機應用開發的基本技能,用匯編和C51 寫過一些基本的程序,真正動手做過一些簡單的項目,然后將自己做過的項目寫成比較規范的文檔。我想,這種形式的“自我介紹”肯定要比讓別人看您那寫的千遍一律的“八股文”簡歷不知要強多少倍,古人言:“一葉知秋”其實講的就是這個道理。平心而論只有具備這樣基礎的學生才配得上企業花錢對您進行二次“開發” 事實上,很多學生根本就不管老師平時是多么地勸導都聽不進去,我認為您只要平時善于做一個有心人,主動一些多找老師請教,然后從大三開始幫老師打打下手干一些活。還有一個途徑就是自己花錢購買一些學習開發實驗板,加強動手能力的訓練。但也有很多學生說沒有錢,可事實上并非如此,現在的學生購買手機成風,我不知道手機對您們現在來說到底有多大的用途?事實上,現在的學生家庭條件普遍都不太好,可這些孩子們的攀比心里卻十分地嚴重和可怕。到今天即將畢業之際才感到找工作太難。父母一個子兒地攢下一些辛苦錢給您購買電腦容易嗎?“望子成龍――可憐天下父母心”!他們是希望您能夠學到一些真本事,而您可能很多時間都在玩游戲,上網聊天,實際上對于您來說僅僅是舉手之勞,只要花幾百元買一塊實驗板,辛苦一個暑假的時間強化實踐,可能您就會與眾不同。與此同時,可能您的信心大增,前途一片光明。俗話說得好:倉庫有糧,心中不慌!如果您平時沒有準備,那么臨時匆匆忙忙地上陣面試肯定是要敗下來的。從2003 年開始是全國第一次擴招之后畢業人數最多的第一年,以后的畢業生還會更多,同時還有更多的研究生與本科生搶飯碗,面對就業的困境壓力不能說不大,痛苦在其中。 還有就是我每天都要面臨那些看不完的自我介紹簡歷,很可惜幾乎都是清一色的“八股文”令人討厭。其實只要您的成績不是太差,分數不是應聘成功的關鍵,重要的是做人要踏實,不要有水分,實際上,只要將您平時做過的小制作寫成一篇心得,再帶上您的作品,“事實勝于雄辯”這樣更能打動人。 {O2\n.Wy,_?0還有很多經歷了四年本科又三年研究生階段學習行將畢業的碩士生,不僅不知道嵌入式操作系統是什么東西,而且連C++都不能熟練掌握,驅動程序開發的能力就更不容提了,僅僅做了一個單片機的應用設計就拿到碩士文憑了,術業缺乏專攻泛泛而談,說句實在話,怎么樣也教人無法接受啊!對于我來說,如果您沒有特別的才能,我寧愿用三年時間培養一個好的本科生給更高的待遇,他肯定不比一般的碩士生差。所以,考上了研究生之后,您要時刻明白加強動手能力的培養和前沿科學技術的學習至關重要的,這是您將來面試的“殺手澗”,因為您畢業之后要求的工資待遇起碼是一般本科生的兩倍,但是這個錢不是那么好拿。的頂多3-5 年的時間,大家肯定能夠看到一個現實,那就是如果您還不能熟練地掌握嵌入式操作系應用開發技術的話,您只能拿2000 元的月薪。即便您是研究生或是博士,那又有什么稀奇的呢?鄧伯伯有句名言,不管白貓還是黑貓,抓住老鼠就是好貓!我們知道企業家是要賺錢的,否則這個企業就留不住人才,無情的市場競爭機制將會毫不猶豫地將這個老板淘汰出局。一個可持續發展的企業,如果離開了富有聰明才智的優秀人才,那是不可想象的。光有幾個還不行,而是要有一個卓越的軍團。 其實就業的問題,對于一個努力的人來說是何等地簡單,我面試了300 多本科生,我只對其中幾個成績中等的本科生感興趣,他們主要是參加過2001 年全國電子大賽,有的是平時業余時間,暑假及其寒假都在跟老師干活的學生,與他們聊天真是一種莫大的享受和欣慰,對于我來說真的是如獲至寶。于是,我就立即勸他們,您的成績中等確實難以考上好的學校和導師還不如不考研究生以免浪費時間,同時也充滿自信告訴他們,“我就是伯樂!我愿意給您機會和花錢培養您”。事實上,即便您考上研究生,如果沒有遇上具有超前眼光和經費充足的導師,您讀了也白讀,更何況現在的研究生擴招的這么多?一個導師帶那么多研究生,有那么多課題嗎?即便有的話,他應付得過來嗎?可能殘酷的現實將會讓您看到,畢業之后回頭一看還遠遠不如當年同您一道畢業的同班同學。確實也是,人家的機會比您好得多,關鍵是人家對待機會比您把握得好,可以說:恰到火候。難道非要讀研究生理論水平才高嗎?這是何等地荒謬啊!我們知道電子與計算機技術的發展日新月異。大學的更新速度一定就要快嗎?回答是否定的,比如說推廣PHILIPS 的最新單片機和USB 技術吧!他們的更新速度肯定比一個可持續發展的企業要慢得多,難道說我們的人才水平不夠高嗎?我們公司就有一批這樣在各個領域里出類拔萃的“年輕專家”從 2003 年開始,我們將會有一系列的專著在北京航空航天大學出版社出版,大多數的著作都來自于我們長期的基礎研究和應用開發,可以毫不夸張地說這些都是我們這個年輕團隊合作的結晶。他們是優秀和卓越的人才,他們沒有就業的壓力,他們不怕炒魷魚,相反我倒時刻要想盡辦法加強公司的管理,從工資,獎金,福利,生活和事業成就感等各個方面絞盡腦際善待人才和留住人才,這么努力的人才根本就不需要過多地為工作和生活發愁,對于這個問題當然是仁者見仁智者見智,也就是下面我要講到的問題,一個人如何根據自己的特點、條件和機遇對自己如何定位的問題,也是至關重要的。 比如說,如果您對單片機的理解僅僅是入門水平的話,那么您首先就應該低調一些,因為您主要的任務是為了尋找一個可以學習的機會,說句實在話,此刻此刻您一定要清醒地意識到:尋找伯樂比眼前的利益更加重要!因為您現在確實還沒有可以驕傲的資本,您一定要想盡辦法取得第一次正式踏入社會的入場卷,這對您來說是何等地重要啊!俗話說得好,“萬丈高樓從地起”您一定要尋找機會通過業績表現出您的能力,您確實與眾不同之處。這樣您就可能在一個公司里樹立您的“信用”,有了信用之后隨之而來的機會將會越來越多,到那時您根本就不用不愁自己的待遇和地位問題了。所以對于一個剛剛步入社會的年輕人來說,您能夠做到以“誠信” 打天下,您將來的前途肯定是無限光明。千萬不要感到自己在班上的成績是前幾名或者相對來說自己的動手能力相比之下比同學強多少、多少,或者自己在讀書期間貸了多少款,或者家里是多么地缺錢,因為當您加入整個社會的競爭之后,這些都不是您要求高薪的理由,這個時候您的心態將可能會決定您的命運,因此對自己要有充分的認識和正確的估價,經常是很多學生用這些理由向我開出高價,我無話可說只好“搖頭和嘆息”。 如果您的水平還不夠,我認為也不要自卑,要知道機會是時刻屬于有準備的年輕人,但也不可掉以輕心,此時此刻,您應該振作起來,立即拿起書本努力學習和加強實戰的訓練,待到羽翼豐滿之時大膽地走出去闖蕩,讓社會來對您做一個恰當的評價,然后再根據現實的情況不斷地調整自己,繼續學習和實踐,由于電子和計算機科學的高速發展呈現日新月異的變化局勢,您一定要明白:您距離失敗永遠只有6 個月! [ 原創 ] Suse| haozi 2009.3.19 3:25 www.zg4o1577.cn 轉載請注明出處
|