1. MCS-51型單片機常用的復位方法有幾種應注意哪些事項
51單片機有五種常用的復位方法:
1.上電制動復位,注意:只要電源的的上升時間不超過1ms,就可以實現自動上電復位。
2.軟體復位,注意:復位信號保持時間是編程人員預定的時間。
3.按鍵電平復位,注意:復位信號保持時間大於2個時鍾周期。
4.外部脈沖復位,注意:復位信號保持時間大於2個時鍾周期。
5.看門狗溢出復位,注意:復位信號保持時間也是編程人員預定的時間。
2. 51系列單片機是如何進行復位的
在單片機系統的應用中,我們經常需要用到復位技術來實現抗干擾。有的單片機(如8098)有專門的復位指令,某些增強型MCS-51系列單片機雖然沒有復位指令,但片內集成了WATCHDOG電路,可以很容易實現復位。而普及型MCS-51系列單片機(如8031和8032)既無復位指令,又不帶硬體WATCHDOS,如果不外接硬體WATCHDOG,就必須採用軟體復位技術。所謂軟體復位就是用一系列指令來模仿復位操作。在MCS-51系列單片機中,只要用指令使程序從起始地址(0x0000)開始執行,就可以復位單片機。
3. 單片機運行 復位是什麼情況
單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
單片機運行時復位,常見的原因有:
1,掉電或電壓過低(我用STC單片機的時候遇到過因為電源電壓過低而導致自動復位的情況)。
2,程序跑飛或者死機後,由看門狗引發的復位。
3,復位引腳接收到復位信號(人工產生或者外部看門狗等電路產生)。
4,STC89C52RC單片機在使用匯編語言編程時,出現類似C語言中函數遞歸的語句時,可以自動復位。這個我在實驗時看到過這個現象,但具體原因不明,我沒有使用看門狗。
5,有些單片機可以在程序控制下自動復位。
4. 如何使用單片機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,可能有疏漏,歡迎提出。