一、什么是單片機復位
單(dan)片(pian)機復(fu)位(wei)是單(dan)片(pian)機上的復(fu)位(wei)電路的復(fu)位(wei)操(cao)作(zuo),作(zuo)用是使電路恢復(fu)到(dao)起(qi)始狀態,為確保(bao)微機系(xi)統(tong)中(zhong)電路穩定可靠(kao)工作(zuo),復(fu)位(wei)電路是必不可少的一部(bu)分。
簡單(dan)來說,單(dan)片機復位,就是(shi)把(ba)數據(ju)清零,從頭再來的意(yi)思,一般單(dan)片機在運(yun)算過程(cheng)中(zhong),由于干擾等(deng)外界原因,造(zao)成寄存器中(zhong)數據(ju)混(hun)亂,不能使(shi)其正常繼(ji)續執行程(cheng)序,或產(chan)生的結果不正確時,需(xu)要(yao)復位,以使(shi)程(cheng)序重新(xin)開始(shi)運(yun)行。
二、單片機復位方式有幾種
復(fu)位的功能(neng)是將單片機里的重新(xin)開始,主(zhu)要防止(zhi)程(cheng)序混亂(luan),也就是跑飛、或者死機等(deng)現(xian)象,單片機的復(fu)位方(fang)式主(zhu)要有以下(xia)幾種:
1、上電復位
當(dang)電(dian)(dian)(dian)(dian)(dian)(dian)源電(dian)(dian)(dian)(dian)(dian)(dian)壓VCC低于(yu)上(shang)電(dian)(dian)(dian)(dian)(dian)(dian)/掉電(dian)(dian)(dian)(dian)(dian)(dian)復(fu)位(wei)電(dian)(dian)(dian)(dian)(dian)(dian)路(lu)的門檻電(dian)(dian)(dian)(dian)(dian)(dian)壓時(shi),所有(you)的邏輯電(dian)(dian)(dian)(dian)(dian)(dian)路(lu)都會被復(fu)位(wei)。當(dang)VCC重新(xin)恢復(fu)到正(zheng)常電(dian)(dian)(dian)(dian)(dian)(dian)壓時(shi),單片機(ji)延遲32768個時(shi)鐘后(hou),上(shang)電(dian)(dian)(dian)(dian)(dian)(dian)復(fu)位(wei)/掉電(dian)(dian)(dian)(dian)(dian)(dian)復(fu)位(wei)狀態(tai)結束。
2、看門狗復位
在(zai)工(gong)業(ye)應用中(zhong),絕大多(duo)數(shu)應用系(xi)統(tong)都會用到(dao)看門狗(gou)(gou)(Watch Dog Timer)。在(zai)工(gong)業(ye)控制/汽車電子/航空航天等高可靠(kao)系(xi)統(tong)中(zhong),為了(le)防(fang)止(zhi)系(xi)統(tong)在(zai)異常情況下受到(dao)干擾導致MCU長(chang)時間異常工(gong)作、程序跑(pao)飛(fei),通(tong)常是引進(jin)看門狗(gou)(gou)。如(ru)果(guo)CPU不在(zai)規定時間內訪問(wen)看門狗(gou)(gou),看門狗(gou)(gou)就認為系(xi)統(tong)出(chu)了(le)問(wen)題,會強制將(jiang)系(xi)統(tong)進(jin)行復位,使系(xi)統(tong)從頭開始(shi)執行程序。
3、軟件復位
單片(pian)(pian)機(ji)系(xi)統(tong)在運(yun)行過程(cheng)中,有(you)時難免(mian)會遇(yu)到(dao)需要軟(ruan)件復(fu)(fu)位的(de)情況(kuang)。有(you)些(xie)古老的(de)單片(pian)(pian)機(ji)在硬件上可能不支持(chi)軟(ruan)件復(fu)(fu)位功能,所以我們就需要去模擬軟(ruan)件復(fu)(fu)位的(de)過程(cheng)。比較常(chang)用(yong)(yong)的(de)方法(fa)是跳轉到(dao)程(cheng)序(xu)的(de)入口地址,利用(yong)(yong)匯編LJMP、JMP等(deng)跳轉語句跳到(dao)程(cheng)序(xu)的(de)初始入口。但是現在常(chang)用(yong)(yong)的(de)一些(xie)單片(pian)(pian)機(ji)(8051、STM32等(deng))在硬件上都支持(chi)軟(ruan)件復(fu)(fu)位,配置專門(men)的(de)寄存器就可以實(shi)現復(fu)(fu)位功能。例如常(chang)用(yong)(yong)的(de)8051單片(pian)(pian)機(ji),有(you)專門(men)的(de)ISP_CONTER寄存器來支持(chi)復(fu)(fu)位。
4、按鍵復位
如果系(xi)統內(nei)部不能正常復位或者軟件(jian)復位無效(xiao)的時候,可以依靠外部的按鍵進(jin)行復位。
三、單片機復位原理是什么
無論使用上面的哪種復位方式,其本質都是在操作RST復位引腳。8051單片機的(de)(de)RST引腳只需要保持2個(ge)機器周期(qi)的(de)(de)高電(dian)(dian)(dian)平即(ji)可產生復位(wei)。利用電(dian)(dian)(dian)容(rong)電(dian)(dian)(dian)壓(ya)不可突變的(de)(de)性(xing)質(zhi),適(shi)當選取電(dian)(dian)(dian)容(rong)充放電(dian)(dian)(dian)的(de)(de)參數(電(dian)(dian)(dian)容(rong)值(zhi)、電(dian)(dian)(dian)阻值(zhi))即(ji)可達到要求(qiu)。剛開始上(shang)電(dian)(dian)(dian)時(shi),由于(yu)(yu)電(dian)(dian)(dian)容(rong)電(dian)(dian)(dian)壓(ya)(0V)不能突變,所(suo)(suo)以電(dian)(dian)(dian)容(rong)兩(liang)(liang)端電(dian)(dian)(dian)壓(ya)為0V,RST此(ci)時(shi)的(de)(de)電(dian)(dian)(dian)壓(ya)為VCC。電(dian)(dian)(dian)容(rong)慢慢充電(dian)(dian)(dian),充電(dian)(dian)(dian)結束(shu)后(hou),電(dian)(dian)(dian)容(rong)兩(liang)(liang)端的(de)(de)電(dian)(dian)(dian)壓(ya)為VCC,所(suo)(suo)以此(ci)時(shi)RST的(de)(de)電(dian)(dian)(dian)勢為0V。電(dian)(dian)(dian)容(rong)的(de)(de)這(zhe)一段充電(dian)(dian)(dian)時(shi)間要大于(yu)(yu)單片機的(de)(de)2個(ge)機器周期(qi)。
軟(ruan)件(jian)復位和看門狗復位方式的原理(li)都是使RST的高(gao)電平(ping)持續時間能夠維持2個機(ji)器周期。