單片機學結與心得

來源:文萃谷 1.59W

為了給前一段時間學習pic16f616型單片機的一個總結和方便大家的交流,我寫了這篇關於pic單片機的學習心得,都是在看了手冊和編程調試後用自己的語言組織的,其中有不足或者有疑問的地方希望大家能及時的給予糾正和批評,提出寶貴的意見。

單片機學結與心得

復位、中斷和睡眠

(1)復位

pic16f616包括這樣的幾個復位功能,上電覆位(power-on)、硬件復位、欠壓復位(brown-out)、看門狗復位。

關於上電覆位por,大家都不陌生,單片機在上電的時候保持復位直到電壓能夠滿足其正常的工作電壓,同時你可以通過對connfig(編譯器上即可設置)的設置,來開啟power-up time,這個時間一般為64ms。

硬件復位可以通過mclr引腳外界復位電路,即可實現硬件復位(將此引腳接低電平)。

欠壓復位這個功能是可選的,也可以直接在編譯環境中配置config寄存器來開啟此功能。當此功能開啟時,如果單片機在運行的時候,供電電壓不足就會引起欠壓復位,復位後單片機如果發現供電電壓已經達到正常值的時候,會有一個64ms的延時,然後再運行程序。

關於看門狗的復位在看門狗部分已經説了。這裏的一些復位還涉及到一些標誌位。這些標誌位分佈在status和pcon上面。status上有兩個位 to、pd,當標誌位to=1時,表示表示已經操作了上電覆位或者是執行了clrwdt或者sleep指令,當to=0時,表示發生了看門狗復位。當標誌位pd=1時表示操作了上電覆位或者是執行了clrwdt指令,當pd=0時,表示執行了sleep指令。pcon上有兩個標誌位是por和bor,分別表示的是上電覆位和欠壓復位標誌。具體的可以參看手冊。

(2)中斷

pic16f616包括這樣的幾個中斷源:ra2/int引腳外部中斷、ra端口電平變化中斷、定時器timer0、timer1、timer2溢出中斷、比較器中斷、ad轉換中斷、捕獲/比較/pwm中斷。

這些中斷的允許位和中斷標誌位分別位於intcon、pie1、pir1、ioca這些寄存器裏面,如果要開啟相應的中斷,就要置相應的中斷允許位,開啟總中斷位(intcon寄存器的gie位),還要開啟intcon上的peie位(定時器0溢出中斷、int引腳沿中斷和ra端口的電平變化中斷除外)。

當中斷髮生的時候,相應的中斷標誌位就會置起來,同時總中斷標誌位gie會被清零,保證在此時間內不會相應其他的中斷,然後將當前的pc指針值壓棧保存,以用來保證中斷能正確的返回到原來執行的地方。然後pc指針指向中斷向量地址0004h的地方,所以在編程序的時候,你可以在0004h的地址存一條跳轉指令跳到你定義的中斷服務程序裏面去就可以了。如果在中斷的時候想保存一些重要的寄存器的話,可以在中斷程序的起始將其保存,然後在中斷服務程序的末尾將其恢復即可。

要注意的是中斷標誌位不會自己清零,這就需要在編程的時候在軟件上對其清零,否則的話,單片機不停的執行中斷服務程序。如果你想要在以後的程序中還能產生中斷的話,就要把總中斷允許位gie重新置位。

(3)睡眠

要想讓單片機睡眠的方法很簡單,執行一條sleep指令就可以了,如果看門狗允許的話,wdt就會被清零,但是還保持運行,寄存器status的pd位將會置0,to位將會置1,io口還保持原來的狀態,在睡眠狀態下,不能驅動振盪器了。

有些事件可以將單片機從睡眠狀態中喚醒:看門狗、ra口電平變化中斷、外部復位引腳mclk被拉低、ra2/int引腳沿中斷、timer1中斷(必須工作在異步計數模式)、eccp捕獲模式中斷、ad轉換中斷(時鐘源必須為內部rc的時候)、比較器輸出有變化,這些事件能夠將單片機喚醒,其他的事件不能。

如果某項能喚醒單片機的中斷已經開了,當總中斷允許位gie為1的時候,單片機被喚醒後可以進入中斷程序中去,而當gie位為0的時候,單片機也可以被喚醒,但是是執行下面的語句,而不能進入中斷程序中去。

為了保證在執行sleep語句後看門狗能夠清零,最好在sleep語句之前加一句清看門狗的語句clrwdt。

相關型號資料:at25020n-10sc2。7 mux08fp irfi9520g ts83c51rb2-mc

單片機學結與心得 [篇2]

ofweek工控網訊:作為一名電子技術從業人員,你學過單片機嗎?你會運用單片機嗎?我想你一定學過,但不一定會運用。因為學習單片機比學習其他學科需要付出更多的努力和代價,不僅要學習理論知識還要練習實際操作,而且主要是在實際操作中才能真正學到單片機技術。此外,學習單片機還需要投入一定的學習成本,隨着你學習知識的擴展成本還會增加。

單片機作為一種簡單的控制器在生活中有這廣泛的應用,當然在工業型單片機在生產中也扮演着很重要的角色,所以對於一個學習自動化的工控人來説,學習單片機是非常有必要的。

單片機的學習經驗

1、學習電子技術基礎知識,如電路、模擬電路和數字電路。這是學習電類相關專業的基礎。

2、學習計算機硬件知識,如計算機的簡單組成原理(只需要瞭解),當然要知道cpu是什麼?總線是什麼?一些相關概念。

3、程序編寫的相關知識,主要是彙編語言和c語言。瞭解結構化語言的程序設計方法,也就是三種結構(順序結構、分支結構(或稱選擇結構)、循環結構),會一些常用的算法。

4、以上是基礎,有了這些基礎,學習51單片機就只要花幾周的時間就能上手。但學習單片機時,主要從單片機的存儲器開始,其中特殊功能寄存器是重點,學會之後,就可以學習單片機的基礎部分了,主要是四個部分:51單片機i/o口的使用、中斷的使用、定時器的使用、外部器件的擴展。這些部分都可以用軟件仿真(可以用proteus軟件)。

5、可以買一兩塊廉價的單片機開發板,用廉價的方法(可以用熱轉印法做PCB板)仿製一些更簡單的實驗功能板,開始做板時千萬不做得太複雜,我帶過的很多學生中,有少部分人總是覺得太簡單了,做個複雜的,結果做了個把星期,沒有成功,最後只有放棄。還有一點很重要,就是用proteus仿真時,最好只做單一功能的仿真,否則可能與實際在硬件上做的結果不一樣。

6、從網上下載一些實例進行研究學習,不斷提高。

單片機學結與心得 [篇3]

學習《微機原理》過後,其實還是挺期待學習《單片機》的,因為個人感覺還是挺有意思的,但是課程安排在大四了,大四對於大多數即將畢業的學生來説是忙碌的,每個人都有自己該做的事情,找工作的、考研的,考公務員的一直忙着起來,很少有人真正的想去上學校所安排的課,雖然對於一部分人來説,它很重要,但是面臨這樣的選擇時,好多人會選擇前者,這在課堂上還是可以看的出來的。

我可能與其他人寫的稍有些不同,想説出自己的一些想法,實事求是,力求把基本的情況反映出來,其實《單片機》的課程還是挺多的,我呢,也曠了幾節課,可能在老師的點名表上可以顯現出來,在課上偶爾也會聽老師您講的內容,不過,可能是這塊不開竅,對於我來説,有點深,也或者可以這麼説,自己沒花一定的功夫在這上,導致跟不上老師上課的節奏。其實,多數人都是這樣,學習單片機課程的意識不強,本身學習單片機也比較困難,看書上説,學習單片機,要掌握單片機指令系統中彙編語言各種基本語句的意義及彙編語言程序設計的基本知識和方法,以及單片機與其他設備相連接的輸入輸出中斷等接口-技術。使我們從硬件軟件的結合上理論聯繫實際,提高動手能力,從而全面掌握單片機的應用。其實總結一句話,就是學習好理論知識並較好的用於實踐。

學習哪一門課程都會給我們一定的影響,單片機也一樣,雖然自己很清楚自己的情況,但是有時感覺,會編程的人挺牛的,這麼多的軟件,影響着我們生活的各個方面,生活已經離不開編程,離不開單片機,離不開我們所學的知識。舉幾個例子,因為它的應用範圍很廣,在工業自動化中應用的數據採集、測控技術。在智能儀器儀表中應用的數字示波器、數字信號源、數字萬用表、感應電流表,自動取款機等。在消費類電子產品中應用的.洗衣機、電冰箱、空調機、電視機、微波爐、手機、ic卡、汽車電子設備等。在通訊方面應用的調制解調器、程控交換技術、手機、小靈通等。在武器裝備方面應用的飛機、軍艦、坦克、導彈、航天飛機、魚雷制導、智能武器等。

寫這報告自己也想了想,自己還有好多方面的不足,不僅僅體現在所學的課程上,更體現在學習專業知識的態度上,體現在個人專業能力方面,雖然可能自己在這方便沒什麼大的造詣,但堅信自己,朝着已定方向前進,實現個人價值不在久遠。

單片機學結與心得 [篇4]

人的一生是一個不斷學習、不斷成長的過程。轉眼間,研究生的學習生涯結束了,走上新的工作崗位。回頭看看,發現自己不知不覺已經走過了五年的單片機學習之旅。

在2003年最初接觸單片機的時候,在我心中覺得51就是單片機,單片機就是51,根本不知道還有其他單片機的存在。那時候老師只教會了我們彙編語言,根本不知道用c語言也可以進行單片機開發。幸運的是,我加入了單片機興趣小組,在老師的指導下,做了一系列實驗,有“基於ds18b20的温度採集系統”、“有基於164的移位寄存器的燈光控制系統”、“有步進電機和直流電機的控制系統”。這時候我才發現,這是學習單片機的一個最好途徑——在實踐中領悟理論,用理論指導實踐。在上課的整整一個學期中,雖然老師講得很詳細,但是大部分概念都是到了實際動手做東西的時候才弄明白的。而且在經歷了迷惑之後再搞清楚,印象就特別深刻。直到現在我對那些概念和接口都非常清晰。其實我也很慶幸學習和使用了兩年多的彙編語言。由於有這些鍛鍊,我對單片機底層結構和接口時序就弄得很清楚。在使用c語言開發的時候,優化代碼和處理中斷也就不會太費勁。我覺得,雖然現在絕大部分單片機開發都使用c語言,甚至有些公司還推出了圖形化編程的工具,這樣對於項目的開展從時間上快了很多,在管理上也規範了不少,但是從學習和想深入掌握單片機精髓的角度來説,還是需要熟練掌握彙編語言的使用。

機會總是青睞於有準備的人。也許有了前面一段時間的理論和實踐的積累,我才慢慢得到了一些參加科技競賽和參與科研項目的機會。在參加第一屆浙江省機械設計競賽的時候,我們設計的由多單片機系統協調控制的“月球車”機器人奪得了唯一的一個特等獎。這個競賽給我最大的收穫是我對單片機的認識改變了,它不再僅僅是一門學科了,它是一個可以讓你的創意得到充分發揮的平台。後來參與了“基於視頻分劃技術的鋼捲尺自動切零位機”、“電能表渦槓渦輪齧合深度檢測系統”、“基於公共電話網的水錶集抄數據路由器”、“高精度電感微位移測量系統”等一些實際的項目。在這些過程中,我發現只是精通單片機技術還不能很好的解決問題。體會最深的是,單片機只有融合到各種應用領域中,才能展現它的最大活力。然而單片機僅僅是一個工具而已,要做好單片機系統還需要各種應用領域的專業知識的支持。例如,在“基於視頻分劃技術的鋼捲尺自動切零位機”中,就需要搞清楚全電視信號的時序,弄明白鋼捲尺切零位機的工作原理,懂得怎麼利用疊加在視頻信號中的橫豎線來進行刻度的瞄準等。沒有這些專業知識,就算單片機技術再厲害也不可能做好這個項目。脱離應用背景的單片機開發,就像一個沒有靈魂的軀體一樣。

隨着arm的出現,我曾經認為,8位單片機可能在32位單片機的衝擊下就此走進歷史,可是很快就認識到我是錯誤的。隨着技術的革新和時間的推移,各大單片機公司紛紛將單片機朝着片上系統這個方向發展,集成了現在各種流行的技術和常用的模塊。我相信,在當前國內和國外的這個市場中, 8位單片機應用的市場仍然是充滿生機,活力無限。在市場的不斷變化和技術的不斷更新過程中,8位單片機也會順應潮流不斷革新。

從我五年走過的路來看,單片機學習的過程應該是一個循序漸進、不斷學習、不斷積累的過程,可以分為三個階段。

第一階段:掌握開發單片機的必備基礎知識。首先是熟練掌握單片機的基本原理,其實各家各門的單片機其基本結構和原理都差不多,特別是共有的知識需要好好理解和掌握。例如,內核結構、內存分配、中斷處理、定時計數、串行通信、端口複用等一些最基本的概念和原理。除此之外,我們還需要具備模擬電子、數字電子、c語言程序開發知識以及原理圖和pcb設計等一些技能。在進行系統開發的時候,進行原理設計、pcb布板、程序編寫、系統聯調這些工作都是在所難免的。

第二階段:在掌握好一款單片機原理和應用的基礎上,開始學習其他各家單片機的獨有技術,學不了那麼多也要多瞭解瞭解。同時儘可能多地掌握單片機的一些外圍器件和常用電路,以備不時之需。有時候客户要求低成本,那我們只好選用合鈦、義隆、華邦等這類台灣芯片;如果客户要求工業級的性能,那麼我們就得從pic、nec、飛思卡爾、nxp等這些歐美和日式單片機中選擇;若要進行功耗的開發,選用msp430系列應該有一定優勢;在進行測量儀器設計的時候,c8051和aduc842這類數模混合芯片就顯得比較方便。所以説最好每個類型的單片機都會一兩款,在實際項目選型中可以更加靈活。另外,要注意平時的技術積累。比如,在項目開發過程中將一些常用的接口程序和控制算法整理成模塊或者函數,在其他的項目開發中,有同樣或者接近的需求時馬上就可以使用,又快又好。

第三階段:在實際的項目開發過程中,不斷深化單片機應用技術,不斷積累應用行業的專業知識。例如,我完成了“高精度電感微位移測量系統”,就會對電感傳感器的測量機理和信號特性、測量電路的設計、電磁兼容處理、誤差修正和非線性處理等測控方面的專業技術有很深的認識。以後碰到類似的項目時,很多東西就可以直接利用了。有了紮實的單片機應用相關的基礎知識,並且熟悉掌握了幾款不同類型單片機的開發方法,再結合實際的應用背景,那麼就可以隨心所欲,設計出性能最優、結構最合理的單片機應用系統。這是我最大的奮鬥目標,我覺得這也應該是單片機應用的最高境界吧。

在這五年的學習中,有感慨、有遺憾、有憧憬、有希望,更重要的是我對單片機應用這個領域充滿熱情。由於才疏學淺、涉世未深,希望能與行業裏的各位老師多多交流,不斷學習,不斷成長。

熱門標籤