① 單片機復位是什麼概念
1 單片機的工作狀態及其狀態遷移 單片機的各種活動,可以描述成多個不同的工作狀態或工作模式。
①把單片機經歷的所有生存狀態歸納和描繪成5個狀態——1個非工作狀態(即無電狀態)和4個工作狀態。
②只有復位狀態是一個暫態,其他均為穩態;並且每次單片機進入正常運行狀態時,都要經歷一次復位狀態。
③只有在正常運行狀態(這里記作NORMAL)下,單片機才按照程序存儲器中同化的用戶程序按部就班地一步一步執行,從而完成開發者設計的各項任務。
④停機狀態(或PD模式)和待機狀態(或IDL模式),主要是為節能降耗而規劃的節電狀態(或稱「睡眠狀態」)。
⑤從無電狀態離開的唯一條件就是上電,並且唯一能夠到達的是一個暫態——復位狀態。
⑥復位狀態以外的4個狀態都有遷移到復位狀態的途徑,只是導致遷移的條件不盡相同。
⑦無電狀態之外的4個工作狀態,都可能因為隨時斷電而導致單片機進入「無電狀態」。
⑧從另外3個工作狀態遷移到復位狀態,基本都是依靠外部引腳RST上的復位信號。原始復位源比較單
一,這是因為傳統80C5l的復位邏輯相對簡單。如果想增加「電源欠壓復位」和「看門狗復位」等其他復位源,則需要片外擴充獨立電路來實現。
⑨標准80C51沒有設計「軟體復位」功能,如果需要該功能,可以通過用戶程序自行實現。不同的是,軟體復位不會令CPU經歷一次復位狀態。
2 復位源、復位操作和復位狀態
像數字電路中的時序邏輯電路器件需要具備復位功能一樣,各種類型的單片機也都需要具備復位功能(RESET)。復位功能按其英文原意是重新設置的意思,也就是從頭開始執行程序,或者重新從頭執行程序(Restart)的意思。復位是單片機的一項重要操作內容,其目標是確保單片機運行過程有一個良好的開端,確保單片機運行過程中有一個良好的狀態。
需要強調的是:關於「復位」一詞,它既包含復位活動的意思,又包含復位狀態的意思。或者說,復位既是一個動態的概念(指復位活動、復位操作、復位處理或復位過程等),又是一個靜態的概念(指復位狀態或復位模式等)。
2.1 常規復位源和擴充復位源
從現今的技術高度來看,標准80C5l單片機的復位功能設計得不夠完善,不僅沒有設置復位標志位寄存器,而且復位源的種類也很少。
所謂「復位源」,就是導致或者引起單片機內部復位的源泉。對於當前市場上出現的種類比較齊全的單片機,其典型復位源大致可以歸納為以下6種:上電復位、人工復位、電源欠壓復位、看門狗復位、非法地址復位和軟體復位。這些復位源的特點是:
①上電復位這一種復位源是必不可少的。因為每次給單片機加電時,其電源電壓的穩定,以及時鍾振盪器的起振和振幅穩定,都需要一定的延遲時間。
②只有上電復位和人工復位這兩種復位源,是講解80C51單片機的教科書、技術文章和文獻資料中比較常見的。
③對於電源欠壓復位、看門狗復位和非法地址復位3種復位源,標准80C5l是不具備的,不過可以額外擴充,可由單片機用戶根據實際需要通過附加一些軟體或硬體的手段來實現。
④雖然電源欠壓復位、看門狗復位、非法地址復位3種復位源可以額外擴充,但是都必須藉助於復位引腳RST來實施復位操作或復位鎖定。
⑤標准80C51本來不具備軟體復位功能,但是可以通過純軟體方式以及虛擬手段,來實現或者部分實現其他單片機的軟體復位。這種方法擴充的軟體復位是一種比較特殊的復位源,一是不通過RST引腳實現復位,二是復位操作的內容與眾不同。軟體復位作為一種新技術,目前有越來越多的新型單片機配備了該功能。例如Phililps公司的P87LPC700和P89LPC900系列、TI-BB公司的MSC1200系列、SunPlus公司的SPMC65系列等,內部都設計了專門用於實現軟體復位的控制寄存器或者控制位。
2.2 復位操作的具體內容
單片機復位功能的實現過程實質上就是在單片機內部進行一系列的復位操作。在復位期間,單片機內部的復位操作究竟完成了哪些內容,是程序設計人員應該搞清的問題,因為單片機復位操作完成之後的內部狀態,就是運行用戶程序和進行軟體處理的背景、基礎和起點。
對80C51單片機來說,只有軟體復位的具體內容和影響范圍,是可以由用戶自由定製的;而凡是直接作用於復位引腳RST上的復位源(如上電復位等),所實現的復位操作的具體內容和影響范圍都應該是一樣的。現在歸納如下:
①程序計數器PC返同到原始狀態0000H;
②所有特殊功能寄存器SFR全部還原為復位值(可以查閱技術手冊);
③所有通用並行埠(PO、Pl、P2和P3)的引腳全部被設置為輸入狀態;
④清除各級中斷優先順序的激活觸發器,以便受理各級中斷請求(在標准80C5l中只設置了2個中斷優先順序別,而在有些新型兼容產品中設置了4個級別)。
2.3 復位狀態的具體表現
單片機一旦進入復位狀態並且停留在復位狀態下(即外接引腳RST被鎖定在有效的高電平上),就會表現出如下一些具體特徵:
◇CPU不再執行程序而保持靜止(凍結)狀態;
◇各種片內外圍模塊(定時器、串列口、匯流排介面、中斷系統等)均停止工作;
◇各個並口(P0~P3)的所有口線均對外呈現高阻狀態;
◇各SFR的內容均恢復到復位值(即返回到知情范圍);
◇內部RAM內容維持記憶,只要電源電壓不低於最低維持電壓(一般為2 V)就能夠保持原有內容;
◇內部時鍾源振盪器仍然會維持振盪,只要電源電壓還在lV(甚至略低於1 V),振盪器就能夠維持工作;
◇各種片外電路(如擴展存儲器、擴展I/O埠或鎖存器等)都應該維持原有內容和狀態。
② 關於單片機上電復位
首先要清楚,在高中是學過:電容是通交流阻直流——所以說在通電的瞬間(注意是瞬間,ms級),電容兩端電壓由0跳變到VCC,由於這個過程時間很短,可認為此時電壓是個頻率很高的交流電,所以此時電容相當於短路。。。在此之後由於VCC電壓不變(直流),電阻就發揮它的阻直流的作用啦,VCC就對電容充電啦,電容兩端電壓就會逐漸升高。由於電容C1與電阻R2是串聯分壓,RST引腳接在R2和地之間,所以RST引腳的電壓就是R2兩端的電壓(RST的電壓=RST電勢-GND的電勢)。由於C1在充電過程電壓逐漸升高,所以R2兩端電壓就逐漸降低(分壓原理),即RST的電壓逐漸降低。
其實你這個復位電路設計的不好,沒有手動復位按鍵,下面也是一個單片機的復位電路,原理都一樣,R21一端引腳接單片機的RST。
③ 單片機如何用C程序復位
可以使用下面的程序跳到0000H實現軟復位,下面的程序實際上是一個函數指針,指針指向了0000H地址。
((void (code *) (void)) 0x0000) ();
下面的例子將實現軟體自復位void reset (void)
{
((void (code *) (void)) 0x0000) ();
}
void main (void)
{
reset ();
}
你可能注意到以上的軟復位程序並不能清除8051的中斷系統和某些8051的外圍設備,當您在中斷程序中調用上面的軟體復位程序後,中斷將再不能觸發。因此,以上的軟復位程序不能在中斷子程序中調用。
下面的小段匯編函數可以在中斷程序或主程序中調用,該函數將0x0000壓棧,然後通過「RETI」出棧,這將清除中斷環境並讓程序從0000H重新開始運行。
?PR?RESET SEGMENT CODE
RSEG ?PR?RESET
; C prototype: void reset (void);
PUBLIC reset
reset: POP ACC ; pop return address
POP ACC
CLR A ; push 0 as new
PUSH ACC ; return address to stack
PUSH ACC
RETI ; execute return of interrupt
END
以上程序在選擇bank 0寄存器組時工作良好,假如選擇的不是bank0寄存器組,那麼可能無法獲得預料的結果。你應該在以上的程序或啟動代碼中加上「MOV PSW, #0」來選擇bank 0寄存器組。
以上文章由龍嘯九天翻譯自KEIL FAQ,可能有疏漏,歡迎提出。
④ 單片機如何自動復位
1、結構:C1R1為上電復位電路;C2、R2、T1、T2與某一IO口構成復位控制電路
2、原理:只講復位的IO控制原理,控制IO為零時,T2飽和導通,T1飽和導通,同時C2通過T2快速放電,RST被拉低,此時IO口變高(復位後為高電平),但是R2C2的作用使T1仍然飽和導通致RST達到有效復位時間(一般十幾個時間同期,可以延時長點時間使復位正常)。當C2上充電電壓上升到一定時,T1截止。
呵呵,畫個圖挺辛苦,希望對樓主有所幫助,具體參數就不說了…………
對不起,以上沒有注意到51單片機是高電平復位的事實,另附一圖,結構相似,原理相同,只是T1飽和導通時RST為高電平,持續十幾個時鍾周期或更長時間可以使51單片機可靠復位。
C1R1都可以省略,一樣可以實現上電復位和IO控制復位雙重功能。
⑤ 51單片機如何實現「復位」
首先需要明確,程序重頭開始執行是指某一段程序(或者一個函數)重新開始執行,還是你所謂的「復位」讓單片機重啟?如果不是特殊需求,建議不要讓單片機復位以使程序重新運行。
從你描述看,你所執行的程序肯定是長時間佔有CPU導致不能實時監測紅外信號,很明顯不能用查詢方式,改用中斷即可,至於中斷後如何停止原來運行的程序再重新開始運行就是你的事了。
那麼我需求就是要檢測到紅外信號後「復位」單片機怎麼辦呢?直接將紅外信號接到復位引腳上(假設你單片機是高電平復位),若是低電平復位,則取反。不過要注意:1、復位信號要持續一定時間才能復位;2、自然界中紅外干擾很多,很有可能你單片機運行著運行著就復位了~~3、若紅外接收器還肩負其他如信號傳輸任務,很明顯這樣不行!
⑥ 單片機的復位方法有幾種
多數為零,自動指向工作寄存器0區
⑦ 單片機復位電路原理
51單片機復位電路工作原理之我理解
一、復位電路的用途
單片機復位電路就好比電腦的重啟部分,當電腦在使用中出現死機,按下重啟按鈕電腦內部的程序從頭開始執行。單片機也一樣,當單片機系統在運行中,受到環境干擾出現程序跑飛的時候,按下復位按鈕內部的程序自動從頭開始執行。
二、復位電路的工作原理
在書本上有介紹,51單片機要復位只需要在第9引腳接個高電平持續2US就可以實現,那這個過程是如何實現的呢?
在單片機系統中,系統上電啟動的時候復位一次,當按鍵按下的時候系統再次復位,如果釋放後再按下,系統還會復位。所以可以通過按鍵的斷開和閉合在運行的系統中控制其復位。
開機的時候為什麼為復位
在電路圖中,電容的的大小是10uF,電阻的大小是10k。所以根據公式,可以算出電容充電到電源電壓的0.7倍(單片機的電源是5V,所以充電到0.7倍即為3.5V),需要的時間是10K*10UF=0.1S。
也就是說在電腦啟動的0.1S內,電容兩端的電壓時在0~3.5V增加。這個時候10K電阻兩端的電壓為從5~1.5V減少(串聯電路各處電壓之和為總電壓)。所以在0.1S內,RST引腳所接收到的電壓是5V~1.5V。在5V正常工作的51單片機中小於1.5V的電壓信號為低電平信號,而大於1.5V的電壓信號為高電平信號。所以在開機0.1S內,單片機系統自動復位(RST引腳接收到的高電平信號時間為0.1S左右)。
按鍵按下的時候為什麼會復位
在單片機啟動0.1S後,電容C兩端的電壓持續充電為5V,這是時候10K電阻兩端的電壓接近於0V,RST處於低電平所以系統正常工作。當按鍵按下的時候,開關導通,這個時候電容兩端形成了一個迴路,電容被短路,所以在按鍵按下的這個過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓在0.1S內,從5V釋放到變為了1.5V,甚至更小。根據串聯電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機系統自動復位。
總結:
1、復位電路的原理是單片機RST引腳接收到2US以上的電平信號,只要保證電容的充放電時間大於2US,即可實現復位,所以電路中的電容值是可以改變的。
2、按鍵按下系統復位,是電容處於一個短路電路中,釋放了所有的電能,電阻兩端的電壓增加引起的。
⑧ 單片機如何復位
單片機復位就兩種方式,一個是硬體復位,一個是軟體復位。
硬體復位就是靠外部的硬體強行把復位管教置為低電平,例如上電的時候,還有按鍵。
上電之所以要復位是因為在接通電源的一瞬間,給單片機的電壓是不穩定的,電壓不穩定就會導致程序跑飛,從而出現意想不到的情況。而常用的阻容復位(就是一個電阻和電容串聯,電阻接VCC,電容接地,復位管教接中間的那種。),當上電的時候,電源經電阻向電容充電,電容看作短路,所以復位管教為低電平,使得單片機在這段時間內不停的復位。當電源穩定後,電容已經充電完成,相當於開路,復位管教為高電平,單片機正常運行程序。
軟體復位就是利用單片機內部的看門狗來防止程序跑飛,看門狗就是個定時器,每個機器周期,它就加一,當它記滿時,就會讓單片機復位。所以要要定時重裝看門狗。正常情況下,不能讓他溢出。這叫喂狗。當單片機受到外界的干擾,使得程序跑飛,跑出while(1)大循環的時候,由於無法執行喂狗的動作,單片機就會復位,從而不會出現單片機死機的情況。
⑨ 單片機運行 復位是什麼情況
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
單片機運行時復位,常見的原因有:
1,掉電或電壓過低(我用STC單片機的時候遇到過因為電源電壓過低而導致自動復位的情況)。
2,程序跑飛或者死機後,由看門狗引發的復位。
3,復位引腳接收到復位信號(人工產生或者外部看門狗等電路產生)。
4,STC89C52RC單片機在使用匯編語言編程時,出現類似C語言中函數遞歸的語句時,可以自動復位。這個我在實驗時看到過這個現象,但具體原因不明,我沒有使用看門狗。
5,有些單片機可以在程序控制下自動復位。
⑩ 單片機復位是什麼意思有什麼作用
單片機復位是單片機上的復位電路的復位操作,作用是使電路恢復到起始狀態。
單片機復位電路主要有四種類型:微分型復位電路;積分型復位電路;比較器型復位電路;看門狗型復位電路。
為確保微機系統中電路穩定可靠工作,復位電路是必不可少的一部分,復位電路的第一功能是上電復位。一般微機電路正常工作需要供電電源為5V±5%,即4.75~5.25V。
由於微機電路是時序數字電路,它需要穩定的時鍾信號,因此在電源上電時,只有當VCC超過4.75V低於5.25V以及晶體振盪器穩定工作時,復位信號才會撤除,微機電路開始正常工作。
(10)單片機復位擴展閱讀:
復位方式:
1、手動按鈕復位
手動按鈕復位需要人為在復位輸入端RST上加入高電平。一般採用的辦法是在RST端和正電源Vcc之間接一個按鈕。當人為按下按鈕時,則Vcc的+5V電平就會直接加到RST端。手動按鈕復位的電路如所示。由於人的動作再快也會使按鈕保持接通達數十毫秒,所以,完全能夠滿足復位的時間要求。
2、上電復位
對於CMOS型單片機,由於在RST端內部有一個下拉電阻,故可將外部電阻去掉,而將外接電容減至1uF。如果系統在上電時得不到有效的復位,則程序計數器PC將得不到一個合適的初值,因此,CPU可能會從一個未被定義的位置開始執行程序。
3、積分型上電復位
常用的上電或開關復位電路如圖3所示。上電後,由於電容C3的充電和反相門的作用,使RST持續一段時間的高電平。當單片機已在運行當中時,按下復位鍵K後松開,也能使RST為一段時間的高電平,從而實現上電或開關復位的操作。