一、什么是單片機(jī)復(fù)位
單片機(jī)復(fù)位是單片機(jī)上的復(fù)位電路的復(fù)位操作,作用是使電路恢復(fù)到起始狀態(tài),為確保微機(jī)系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的一部分。
簡單來說,單片機(jī)復(fù)位,就是把數(shù)據(jù)清零,從頭再來的意思,一般單片機(jī)在運(yùn)算過程中,由于干擾等外界原因,造成寄存器中數(shù)據(jù)混亂,不能使其正常繼續(xù)執(zhí)行程序,或產(chǎn)生的結(jié)果不正確時,需要復(fù)位,以使程序重新開始運(yùn)行。
二、單片機(jī)復(fù)位方式有幾種
復(fù)位的功能是將單片機(jī)里的重新開始,主要防止程序混亂,也就是跑飛、或者死機(jī)等現(xiàn)象,單片機(jī)的復(fù)位方式主要有以下幾種:
1、上電復(fù)位
當(dāng)電源電壓VCC低于上電/掉電復(fù)位電路的門檻電壓時,所有的邏輯電路都會被復(fù)位。當(dāng)VCC重新恢復(fù)到正常電壓時,單片機(jī)延遲32768個時鐘后,上電復(fù)位/掉電復(fù)位狀態(tài)結(jié)束。
2、看門狗復(fù)位
在工業(yè)應(yīng)用中,絕大多數(shù)應(yīng)用系統(tǒng)都會用到看門狗(Watch Dog Timer)。在工業(yè)控制/汽車電子/航空航天等高可靠系統(tǒng)中,為了防止系統(tǒng)在異常情況下受到干擾導(dǎo)致MCU長時間異常工作、程序跑飛,通常是引進(jìn)看門狗。如果CPU不在規(guī)定時間內(nèi)訪問看門狗,看門狗就認(rèn)為系統(tǒng)出了問題,會強(qiáng)制將系統(tǒng)進(jìn)行復(fù)位,使系統(tǒng)從頭開始執(zhí)行程序。
3、軟件復(fù)位
單片機(jī)系統(tǒng)在運(yùn)行過程中,有時難免會遇到需要軟件復(fù)位的情況。有些古老的單片機(jī)在硬件上可能不支持軟件復(fù)位功能,所以我們就需要去模擬軟件復(fù)位的過程。比較常用的方法是跳轉(zhuǎn)到程序的入口地址,利用匯編LJMP、JMP等跳轉(zhuǎn)語句跳到程序的初始入口。但是現(xiàn)在常用的一些單片機(jī)(8051、STM32等)在硬件上都支持軟件復(fù)位,配置專門的寄存器就可以實(shí)現(xiàn)復(fù)位功能。例如常用的8051單片機(jī),有專門的ISP_CONTER寄存器來支持復(fù)位。
4、按鍵復(fù)位
如果系統(tǒng)內(nèi)部不能正常復(fù)位或者軟件復(fù)位無效的時候,可以依靠外部的按鍵進(jìn)行復(fù)位。
三、單片機(jī)復(fù)位原理是什么
無論使用上面的哪種復(fù)位方式,其本質(zhì)都是在操作RST復(fù)位引腳。8051單片機(jī)的RST引腳只需要保持2個機(jī)器周期的高電平即可產(chǎn)生復(fù)位。利用電容電壓不可突變的性質(zhì),適當(dāng)選取電容充放電的參數(shù)(電容值、電阻值)即可達(dá)到要求。剛開始上電時,由于電容電壓(0V)不能突變,所以電容兩端電壓為0V,RST此時的電壓為VCC。電容慢慢充電,充電結(jié)束后,電容兩端的電壓為VCC,所以此時RST的電勢為0V。電容的這一段充電時間要大于單片機(jī)的2個機(jī)器周期。
軟件復(fù)位和看門狗復(fù)位方式的原理都是使RST的高電平持續(xù)時間能夠維持2個機(jī)器周期。