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