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