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