新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機關鍵技術基礎詳解(二)

        單片機關鍵技術基礎詳解(二)

        作者: 時間:2016-11-24 來源:網絡 收藏
        一、CPU與單片機的復位電路的作用及基本復位方式

          在上電或復位過程中,控制CPU的復位狀態:這段時間內讓CPU保持復位狀態,而不是一上電或剛復位完畢就工作,防止CPU發出錯誤的指令、執行錯誤操作,也可以提高電磁兼容性能。

        本文引用地址:http://www.104case.com/article/201611/320947.htm

          無論用戶使用哪種類型的單片機,總要涉及到單片機復位電路的設計。而單片機復位電路設計的好壞,直接影響到整個系統工作的可靠性。許多用戶在設計完單片機系統,并在實驗室調試成功后,在現場卻出現了“死機”、“程序走飛”等現象,這主要是單片機的復位電路設計不可靠引起的。

          基本的復位方式

          單片機在啟動時都需要復位,以使CPU及系統各部件處于確定的初始狀態,并從初態開始工作。89系列單片機的復位信號是從RST引腳輸入到芯片內的施密特觸發器中的。當系統處于正常工作狀態時,且振蕩器穩定后,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以響應并將系統復位。單片機系統的復位方式有:手動按鈕復位和上電復位。

          1、手動按鈕復位

          手動按鈕復位需要人為在復位輸入端RST上加入高電平(圖1)。一般采用的辦法是在RST端和正電源Vcc之間接一個按鈕。當人為按下按鈕時,則Vcc的+5V電平就會直接加到RST端。手動按鈕復位的電路如所示。由于人的動作再快也會使按鈕保持接通達數十毫秒,所以,完全能夠滿足復位的時間要求。

          

          圖1

          2、上電復位

          AT89C51的上電復位電路如圖2所示,只要在RST復位輸入引腳上接一電容至Vcc端,下接一個電阻到地即可。對于CMOS型單片機,由于在RST端內部有一個下拉電阻,故可將外部電阻去掉,而將外接電容減至1?F。上電復位的工作過程是在加電時,復位電路通過電容加給RST端一個短暫的高電平信號,此高電平信號隨著Vcc對電容的充電過程而逐漸回落,即RST端的高電平持續時間取決于電容的充電時間。為了保證系統能夠可靠地復位,RST端的高電平信號必須維持足夠長的時間。上電時,Vcc的上升時間約為10ms,而振蕩器的起振時間取決于振蕩頻率,如晶振頻率為10MHz,起振時間為1ms;晶振頻率為1MHz,起振時間則為10ms。在圖2的復位電路中,當Vcc掉電時,必然會使RST端電壓迅速下降到0V以下,但是,由于內部電路的限制作用,這個負電壓將不會對器件產生損害。另外,在復位期間,端口引腳處于隨機狀態,復位后,系統將端口置為全“l”態。如果系統在上電時得不到有效的復位,則程序計數器PC將得不到一個合適的初值,因此,CPU可能會從一個未被定義的位置開始執行程序。

          

          圖2

          3、積分型上電復位

          常用的上電或開關復位電路如圖3所示。上電后,由于電容C3的充電和反相門的作用,使RST持續一段時間的高電平。當單片機已在運行當中時,按下復位鍵K后松開,也能使RST為一段時間的高電平,從而實現上電或開關復位的操作。

          根據實際操作的經驗,下面給出這種復位電路的電容、電阻參考值。

          圖3中:C:=1uF,Rl=lk,R2=10k

          

          圖3 積分型上電復位電路

        二、編制單片機應用程序的步驟和難點

          1前言

          如何編寫單片機應用程序,這是一個實踐性很強的題目,也是1項艱苦而細致的工作。如果按照一定的步驟并且找出難點,事先對這些難點加以處理,能夠收到事半功倍的效果。下面根據實際工作中的經驗,談談實際開發中必經的幾個步驟和可能遇到的難處理。對于1個單片機應用程序,其編制過程如圖1所示。

          

          2編制步驟

          2.1搞清功能和編寫方案

          接到一個單片機項目設計文件之后,并不是馬上動手編寫程序,而是仔細研究用戶提出的技術要求或者技術說明,根據這些技術要求和技術說明,也就是客戶要求,把程序應該具備的主要功能寫清楚,寫仔細,這是最關鍵的工作。如不清楚,應向客戶和使用者問清楚,否則在設計完成以后會發現有些功能由于事先沒有考慮清楚再重新設計將會很麻煩,可能有些需要重新增加的功能很容易補充,而有些可能由于沒有事先考慮周全而無法實現。

          2.2編寫總流程圖和各功能模塊流程圖

          根據要完成的程序功能寫出總流程圖,根據總流程圖把整個程序劃分成幾個主要的功能模塊,每個功能模塊都要寫出基本流程圖,這主要是為以后的程序編寫起到一個指導作用。當然,在實際的程序編寫過程中肯定會有一些改動,1個基本的流程會指導您在寫程序的過程中不會出現太大的偏差。例如,編寫鍵盤掃描并且區分是功能鍵還是數字鍵的子程序,如果是功能鍵就轉相應的功能處理程序;如果是數字鍵就在相應的數碼管上顯示出來;可以寫出其流程圖,如圖2所示。

          

          2.3準備編程所需的資料

          這些資料主要是編程語言方面的書籍、雜志等。因為程序語言的有些資料任何編程人員都不可能記得太清楚,如每條指令的含義,具體操作每條指令所牽涉的硬件電路等。如果資料準備得比較充分,可以放在案邊,若有需要,順手查閱。

          2.4人機界面的編程

          用單片機實現的項目人機界面相對簡單。若為LED顯示,應根據LED的位數選取簡單、明燎、用戶一看便知的提示符;顯示的數據位數應充分考慮用戶提出的技術要求。


        上一頁 1 2 3 4 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 如东县| 永济市| 杭锦后旗| 云龙县| 阿勒泰市| 天全县| 新竹市| 仁化县| 达尔| 凌海市| 延寿县| 东阳市| 茌平县| 咸宁市| 炎陵县| 固镇县| 浠水县| 深圳市| 汤阴县| 昌乐县| 太原市| 陇南市| 陕西省| 北海市| 缙云县| 天峻县| 林州市| 灵武市| 罗源县| 乳源| 秭归县| 元朗区| 姜堰市| 凌云县| 和静县| 镇坪县| 阜南县| 芜湖县| 宁安市| 温州市| 宁远县|