今晚又是寫程序 睡不著 寫點東西吧 也算是自己的一個總結(jié)
首先是兩個字 “喜歡”!!
一個東西 光有10分鐘的熱度是不夠的
從事單片機 就意味著你以后是和枯燥的程序 調(diào)試 亂碼 未知的軟硬件錯誤 熬夜 臉上的豆豆 什么什么的聯(lián)系在一起(有點夸張 哈哈)
如果你選擇了這種生活 并且確定你有一種精神能指引你一路走到底 至于什么精神 只有你自己知道 是滿屏幕的 0101 還是 一串串胡亂的ABCD
還是 成功后的成就感 還是天生俱來的對電子類東西的 癡迷 還是喜歡別人在外面花天酒地 卻喜歡獨坐電腦面前 攻克技術(shù)的顛峰 不需要理由
世界上就有這樣一種人 不需要理由
那么確定了上面的之后 讓我們開始吧 單片機 也叫做單板機 單片微型計算機 麻雀雖小 五臟俱全 那么如果你學(xué)過計算機組成原理 我相信你應(yīng)該能更好的理解 單片機的內(nèi)部結(jié)構(gòu) 如果沒有學(xué)過 也不要緊 那就拿小麻雀開刀 再一層層 自下而上的 到我們所用的PC
剛開始學(xué)單片機的時候 看到厚厚的一本書 不要一咬牙 要一下子把書全部看完 看得仔仔細細 明明白白 先看看目錄 無非就是 介紹單片機的歷史 然后它內(nèi)部的組成原理 然后是指令 然后就是接口 先說歷史 知道51單片機是現(xiàn)在資料最豐富 最適合上手拿來開刀的就是了 不要覺得書上的 知識老 這都 N多年前的了 現(xiàn)在是不是都不一樣了 兼容這個詞 比如你用 ATC51 寫的程序 拿到 ATS51 52 STC 都能用 只是 后續(xù)的片子 在一些地方更加完善 功能更強大
比如 在書上來掉牙的 2051 上的 MOV A,#00H 到其他 51系列的 上也是一樣的 你看它的片子的介紹上 寫了一句 “完全兼容51系列單片機” 那么OK
別管那么多 只管用就是了 我發(fā)覺我廢話多了 這不知道寫到那去了。。抽跟煙 繼續(xù)。。。
上面的意思是說 面前是一坐山 很高 然后我就一咬牙 嗎的 慢慢爬吧 我不信我爬不上去了 或許爬到一半就退縮了 退而再攻之
我拿個測量儀來 噢 原來這山總共7000米 半山腰有個亭子 到那是3500米 剛開始那1000米 坡度很小 2000米的時候有個 茅房(^_^) 6000米的時候有個美女正在洗澡 山頂有個和尚廟 行 心中有了底 上!!
剛開始的時候初學(xué)一定要用匯編 可能大家也看到了 關(guān)與C和匯編的討論 各有各的說法 我個人覺得初學(xué)者 完全沒有必要去追求什么飄逸的風(fēng)格
就用笨拙的匯編 雖然它像一頭大苯熊一樣 但是 當(dāng)你能和大笨熊 親切的交流 屈駕自如的時候 再去和 漂亮的兔子MM 鴛鴦戲水 會更加的得心應(yīng)手
匯編剛開始你會覺得很煩 就是 在那 MOV 過去 MOV 過來 JB JC JNB JNC DJNZ 很難記 不像C 一個 IF 一個 DO WHILE 就搞定的事
但是 用匯編你能更加了解 一條指令在 CPU 內(nèi)存 的執(zhí)行過程 能更加親切的和 P0 P1 P2 P3 的每一個 口線 交流 不需要C 的屏蔽底層 而是直接的就和底層 親密接觸 這里有人要說我了 什么什么的 還是那句話 個人意見 僅供參考 在寫延時程序的時候 DJNZ 是雙周期指令 比如12M的 那么 一條指令是1US 那么你要精確的知道自己這段延時 能延時多少US 多少MS 那么你對 51單片機內(nèi)部的 指令 周期 對以后寫有嚴格時序操作的程序 就更加得心應(yīng)手 比如 看到一個片子的PDF 數(shù)據(jù)總線 要拉低多少MS 地址總線 要拉高多少US 等待周期要等待多少US/MS 那么 不要懷疑 自己寫 指令 搞定它 成功以后 你會發(fā)現(xiàn)你從 最底層的了解了 一個片子是怎么傳送數(shù)據(jù) 怎么通信 這樣的經(jīng)歷 對你以后再接觸其他 片子的時候是莫大的幫助
像關(guān)于書上的內(nèi)容 指令不用記得那么死 或者說完全不需要記 需要的時候 馬上查 在查的過程中 會更加加深你的印象(說點丟人的話 JC JB JNB JB 這些 指令我到現(xiàn)在都從來不記 我又不應(yīng)付考試 我書隨時就在旁邊 用的時候去翻就是了 )
這也就提到了練習(xí)
程序 和指令 不要只看不用 實踐是檢驗真理的唯一標準 實踐出真知 這都是老話了 不過用在單片機的學(xué)習(xí)上是太貼切了 單片機 本來就是實踐性很強的
像我在學(xué)校的時候 每次實驗課 都認真的做 抓住每次上機的機會 板子很貴 自己買不現(xiàn)實 而上機的時候能接觸到的每一次都很寶貴
LED流水燈 十字口 交通燈 這些程序很基礎(chǔ) 在一次 一次的小程序成功的過程中 你會更加喜歡上單片機 并且堅定繼續(xù)為之不離不棄的決心
熟能生巧 我還記得我剛開始的時候 經(jīng)常是 把指令寫錯 把 跳轉(zhuǎn)的標號寫錯 經(jīng)常用系統(tǒng) 的關(guān)鍵字 變量未定一存儲空間就用 等等等等。。 但是 一次 又一次錯誤 下來 得到的是程序的正確性的大大的提高
在這里我建議 剛開始先多讀別人的程序 而且是完整的 備注多的 格式規(guī)范的 從最開始就養(yǎng)成良好的 編程風(fēng)格 而不是隨意的亂添亂加 胡亂的復(fù)制粘貼
看懂 別人程序里的每一句代碼的意思 為什么要加這條 這條指令的作用是什么 如果不清楚 馬上翻書去查 在查的過程中 更加加深對這條指令 或者這段子程序的用法的深刻的記憶 下次自己用的時候 才能像自己一樣的拿來 得心應(yīng)手 這也是為什么要選擇51系列的單片機 應(yīng)該它的示例代碼 網(wǎng)上鋪天蓋地 而且高手也不會吝嗇的把 初學(xué)要用的代碼 還設(shè)置成什么自動回復(fù) 才能看才能下載 得到這些 代碼的途徑是很方面的 得到的有用的信息也是最多的 像 1302 1602 DS18B20 LED 串口 DA AD 常用的接口與51的驅(qū)動程序 這些網(wǎng)上都有很多 匯編版本 的 C 版本的 不要覺得都是幾年前的東西 都是人轉(zhuǎn)來轉(zhuǎn)去 老掉牙的東西 先都拿來消化掉 再為自己所用
大家也許也發(fā)現(xiàn)了 在BAIDU 里找一些程序的時候看到一版的匯編 代碼 但是沒有一點注釋 2個字 痛苦 所以 為了方便大家 也位了以后你能方便別人
剛開始寫程序就要習(xí)慣 給程序?qū)憘渥?為了別人能看懂 像一個大的工程 都是團隊合作 你幾千的代碼 沒有備注 別人幾千的代碼也沒備注 那好吧 先花個1天的時間把程序看懂了 再干其他的吧
程序中像子程序的說名 入口參數(shù) 出口參數(shù) 內(nèi)存的分配 關(guān)鍵語句的 單條備注 標號的頂格 代碼的 縮進 等等 良好的編程風(fēng)格絕對會讓你在以后的工作和學(xué)習(xí)過程中事半功倍
;-------------------------
;****子程序
;-------------------------
next:
mov a,th0 ;//讀取計數(shù)值TH0
swap a ;//高4位與低4位對換
mov r1,a ;//保存到R1
anl tl0,#0f0h ;//取TL0高4位,低4位忽略不計
寫了一些小程序之后 那么 就是做完整的小實驗 參照別人的程序比如寫一個接口芯片的驅(qū)動 不再是點亮一個燈 又點另外一個燈
這種的完整的驗證型的實驗非常重要 不要希望上課的時候老師給你的程序能讓你突飛猛進 只有自己不斷的做實驗 寫程序 才能讓自己學(xué)得更快
像買到的板子 都有完整的代碼 這對于學(xué)習(xí)是很好的資料 因為它能所見即所得 不再是書上 的紙上談兵 那么程序是正確的 看懂了以后 自己可有試著改以下里面的某
個地方 你能找到它的核心的那幾條 或一段代碼 那么說明你對這段程序的理解已經(jīng)更上一層樓了
初學(xué)者買板子很重要 而板子上的示例代碼 和 技術(shù)支持 更重要 通過這個板子你能接觸到一個平臺 供你學(xué)習(xí) 那么這個板子就是值的 如果板子買來了就閉門造車
那么 板子再好 不是件好事 功能旋目的板子 強大大可以怎么樣怎么樣的板子 沒有必要去買 當(dāng)你強大到要用到它上面的什么 激光 設(shè)想頭的時候 我想你也已經(jīng)不會再用那塊板子開發(fā)東西了 基本的 液晶 數(shù)碼管(是個很強大的東西 像我不喜歡什么軟件仿真 在有問題的地方 設(shè)置個斷點 程序執(zhí)行到這一步 把值讀出來 顯示到LED上 簡單方便 )常用的51的接口有就夠了 說到自己做實驗板 買來的板子都有完整的電路圖 對于電子基本共不扎實的朋友 買來后看懂原理圖 再慢慢的 自己做板子好一點
買了同一種板子的 能有個交流區(qū) 是最好的 各個問題和程序 拿出來大家交流 能起到很大的作用 也會少走很多彎路 目前這個正在籌劃當(dāng)中 我會盡快和站長聯(lián)系 開個專區(qū) 供大家交流和學(xué)習(xí)用 上面提到了 基本功 這才記起。。(不好意思^_^) 像搞單片機 分幾種 上層的 和底層的 上下通吃 的
不過剛開始的 都不是很復(fù)雜 我建議大家上下通吃 還是那句話 有不懂的 馬上查資料 電容 3級管 2級管 放大 整流 穩(wěn)壓 濾波 上拉 /限流電阻 還有Protel 99 SE 自己畫電路圖 等等 這些基本功 隨著學(xué)習(xí)的深入 都要一點一點的累積起來 不懂不要緊 問題是不能讓一個問題一直捆饒著你 要有一種精神 不搞懂它 我就不罷休的精神 那么我相信任何困難都不會成為阻止你成功的絆腳石。
又說到那來了 夜深了 瞌睡來了 **
單片機 要天天碰 調(diào)程序就到板子上結(jié)合著硬件環(huán)境調(diào) 像DA AD 我剛開始學(xué)的時候那一章的內(nèi)容根本都沒看 直到后來要做個東西 需要AD轉(zhuǎn)換 去翻了下TLC1543D 的PDF 然后看了下 它的時序 去網(wǎng)上找了下 示例代碼 然后寫的程序 像書上的 ADC0809 DAC0832 我是在用了其他轉(zhuǎn)換片子后 回過頭去看的時候 發(fā)現(xiàn)這片子缺陷確實太多 然后再去看它的程序和使用方法 很簡單 這里的意思并不是說 書上的 ADC0809 DAC0832 不重要 而是說大家學(xué)一個東西的時候 如果能結(jié)合板子學(xué)的話 或者說能馬上用到 那么是最好 成效也是最快的 實踐的力量確實是不能小窺的 而現(xiàn)在普遍的大學(xué)生的高分低能 學(xué)軟件工程的 讓用VB 寫個小程序 不會寫 單片機90多分的 寫個LED連單片機是具體的單片機的什么樣子都沒見過 找工作的時候一大堆的獎 一大堆的廢話。拿出自己做的成品 隨意的和招聘的人聊各個單片機的優(yōu)缺點 正確的說出每種常用的片子的用途 用法 證明自己的實際的動手能里 找工作是難 但是分人。我相信 在大學(xué)實驗室里呆2年 的人 和在大學(xué)里 談2年戀愛的人 打2年網(wǎng)游 看2年小說 聊2年QQ 打2年CS的人的結(jié)果絕對是不一樣的 亂78糟的寫了 很多 大家能看完不甚感激 如果有什么地方不對的 還請大家多多指正 我也是個學(xué)習(xí)者 深切的感到剛學(xué)單片機的時候的困惑
評論
查看更多