第十節(jié):PIC系列單片機(jī)復(fù)位(RESET)
PIC16C5X內(nèi)藏有上電復(fù)位電路(POR)。在芯片上有一復(fù)位端MCLR,對(duì)于一般的應(yīng)用,只要把MCLR端接在高電位(VDD)即可,因?yàn)閮?nèi)部復(fù)位電路會(huì)在芯片上電時(shí)自動(dòng)復(fù)位,無(wú)需在MCLR端再加上電復(fù)位電路。對(duì)于某些特殊應(yīng)用,則需在MCLR端加上外部上電復(fù)位電路,在§1.10.5我們會(huì)談及這個(gè)問(wèn)題。
§1.10.1 復(fù)位的條件和原因
復(fù)位可由下面事件引發(fā)產(chǎn)生:
a、芯片上電;
b、把芯片MCLR端置低電平;
c、看門(mén)狗(WDT)超時(shí)溢出。
§1.10.2 復(fù)位時(shí)的PIC狀態(tài)
在芯片復(fù)位期間,芯片狀態(tài)為:
a、振蕩器處于起振準(zhǔn)備狀態(tài);
b、所有I/O口都被置成高阻態(tài)(即輸入態(tài));
c、PC值被置為全"1";
d、OPTION被置為全"1";
e、WDT和預(yù)分頻器被清零;
f、狀態(tài)寄存器(F3)的程序頁(yè)面位(高三位)被清零。
§1.10.3 振蕩起振計(jì)時(shí)器(OST)
對(duì)于晶體/陶瓷振蕩電路,上電后它們還需要一定的時(shí)間來(lái)起振或產(chǎn)生穩(wěn)定的振蕩信號(hào),有鑒于此,PIC在其內(nèi)部專(zhuān)門(mén)設(shè)置了一個(gè)"振蕩起振計(jì)時(shí)器"OST(Oscillator Start-up Timer)。OST在MCLR端達(dá)到高電平后才開(kāi)始啟動(dòng)計(jì)時(shí)18ms,使RESET狀態(tài)保持18ms以便讓振蕩電路起振及穩(wěn)定下來(lái)。在一般情況下,我們都將MCLR端直接在VDD(+5V)上即可。這樣上電后一旦MCLR端電平升高到一定程序后OST即開(kāi)始計(jì)數(shù)18ms,這段時(shí)間已足夠讓振蕩起振,OST計(jì)滿(mǎn)18ms后,芯片結(jié)束RESET狀態(tài),開(kāi)始進(jìn)入程序運(yùn)行。
當(dāng)WDT計(jì)時(shí)溢出后,OST也是馬上啟動(dòng)計(jì)時(shí)18ms,保持18ms的RESET狀態(tài),然后再進(jìn)行程序運(yùn)行。
§1.10.4 內(nèi)部上電復(fù)位路(POR)
PIC16C5X片內(nèi)上電復(fù)位電路POR(Power On Reset)能使PIC芯片上電后自動(dòng)會(huì)產(chǎn)生復(fù)位,所以一般不需要再在MCLR端加外部復(fù)位電路,只要將其接在VDD上即可。圖1.16是POR的簡(jiǎn)圖。
從圖中我們可以看到,當(dāng)上電(Power On)、或MCLR端變低,都會(huì)置位(set)"復(fù)位鎖存器",使其輸出復(fù)位電平讓芯片處于RESET狀態(tài),這時(shí)OST也處于復(fù)位狀態(tài)。當(dāng)OST檢測(cè)到MCLR變?yōu)楦唠娖胶蠹撮_(kāi)始計(jì)時(shí)18ms,計(jì)滿(mǎn)18ms后會(huì)復(fù)位(Reset)"復(fù)位鎖存器"使其Q端輸出高電平,從而使芯片結(jié)束復(fù)位狀態(tài),進(jìn)入運(yùn)行。
§1.10.5 外部復(fù)位電路 在某些應(yīng)用情況下我們也可能需要外部復(fù)位電路。
一、手動(dòng)復(fù)位開(kāi)關(guān)
當(dāng)你在應(yīng)用中需要一個(gè)手動(dòng)復(fù)位開(kāi)關(guān)時(shí),可以使用下面的電路。如圖1.17。
二、低頻振蕩電路
當(dāng)使用低頻振蕩(LP)時(shí),OST的18ms不足以使其建立穩(wěn)定的振蕩,所以也許你需要更長(zhǎng)的RESET 時(shí)間,這時(shí)可以用外部上電復(fù)位電路來(lái)延長(zhǎng)復(fù)位時(shí)間。如圖1.18。
圖1.17 按健復(fù)位電路
注:1.二極管D使電容C能在VDD掉電時(shí)快速放電。
2. R<40KΩ,以保證其兩端的電壓降不大于0.2V(即IMCLR*R<0.2V,IMCLR為 MCLR
端最大輸入電流)。
3. R1取100Ω~1KΩ,用來(lái)限制在靜電環(huán)境,電容C充放電時(shí)的沖擊電流。
使用了外部加電復(fù)位電路,其復(fù)位過(guò)程即如圖1.19所示:
VDD上升到穩(wěn)定值一段時(shí)間后MCLR才上升到高電平。而OST只有檢測(cè)到MCLR升為高電平后才開(kāi)始計(jì)時(shí)18ms,所以就可取得長(zhǎng)于18ms的復(fù)位時(shí)間了。
§1.10.6 復(fù)位后對(duì)寄存器值的影響
對(duì)于通用寄存器來(lái)說(shuō),芯片上電復(fù)位后它們的值是隨機(jī)不定的,而其他類(lèi)型的復(fù)位則保持原值不變。
對(duì)于特殊功能寄存器,各種復(fù)位后它們會(huì)等于一個(gè)固定的復(fù)位值,見(jiàn)以下二表: