8051單片機(jī)的復(fù)位狀態(tài)
復(fù)位就是指通過(guò)某種手段使單片機(jī)內(nèi)部某些資源一種固定的初始狀態(tài),以確保單片機(jī)每次復(fù)位后都能在某一固定的環(huán)境中從某一固定的入口地址處開(kāi)始運(yùn)行,8051復(fù)位后片內(nèi)各特殊功能寄存器狀態(tài)如下:
PC內(nèi)容為0000H,使單片機(jī)從起始地址0000H開(kāi)始執(zhí)行程序。所以單片機(jī)運(yùn)行出錯(cuò)或進(jìn)入死循環(huán),可以按復(fù)位鍵重啟。
ACC內(nèi)容為00H。
PSW內(nèi)容為00H,意義為復(fù)位后,上次運(yùn)算沒(méi)有產(chǎn)生進(jìn)位或借位,也沒(méi)有產(chǎn)生半進(jìn)位或半借位,工作寄存器組R0—R7定位在內(nèi)部RAM的00-07單元,上次運(yùn)算沒(méi)有溢出,累加器中“1”的個(gè)數(shù)為偶數(shù)。
SP內(nèi)容為07H,意義為堆棧指針SP指向內(nèi)部數(shù)據(jù)存儲(chǔ)器的07單元,即堆棧從08單元開(kāi)始。
DPTR為0000H;PO-P3內(nèi)容為FFH;IP的第六位為0,高六位的值不變;IE次高位即位6的值不定,其于位全為0;TMDO內(nèi)容為00;TCON內(nèi)容為00;TLO內(nèi)容為00;THO內(nèi)容為00;TL1內(nèi)容為00;TH1內(nèi)容為00;SCON內(nèi)容為00;PCON的位六位五位四位內(nèi)容不變,其余位都為0除以上寄存器外,其余的數(shù)據(jù)寄存器內(nèi)容都為隨機(jī)數(shù)。
8051復(fù)位電路一般來(lái)說(shuō),復(fù)位有兩種方式,一種是硬件電路,一種是軟件電路,8051單片機(jī)只提供硬件復(fù)位方式,沒(méi)有提供軟件復(fù)位指令,所以,8051中的軟件復(fù)位只能通過(guò)其他手段來(lái)實(shí)現(xiàn)。比如,利用堆棧實(shí)現(xiàn),關(guān)于軟件復(fù)位我們?cè)诳垢蓴_技術(shù)上講述。下面我們介紹8051的硬件復(fù)位,8051的硬件復(fù)位由片內(nèi)復(fù)位檢測(cè)電路和片外檢測(cè)電路。
片內(nèi)復(fù)位檢測(cè)電路的作用是不斷的檢測(cè)復(fù)位引腳RST,當(dāng)發(fā)現(xiàn)引腳上出現(xiàn)持續(xù)時(shí)間大于24個(gè)鐘脈沖,即兩個(gè)機(jī)器周期的高電平時(shí),就自動(dòng)對(duì)8051進(jìn)行復(fù)位。
片外復(fù)位電路一般有上電復(fù)位和帶按鍵的上電復(fù)位兩種。
我們來(lái)看看帶按鍵的上電復(fù)位電路的工作過(guò)程:
該電路由一只電容,兩只電阻和一只常用開(kāi)按鈕組成。
當(dāng)按鈕常開(kāi)時(shí),為上電復(fù)位;系統(tǒng)加電前,電容兩端電壓為0,系統(tǒng)加電后,由于電容兩端電壓不能跳變,所以電容兩端的電壓仍舊為0,即引腳RST出現(xiàn)高電平,隨后,電容開(kāi)始充電,電容上的電壓從0開(kāi)始上升,引腳RST上的電位開(kāi)始回落,經(jīng)過(guò)一段時(shí)間,引腳RST被電容充電拉為低電平,這樣,在引腳RST上就產(chǎn)生一個(gè)一定寬度的正脈沖,只要電容C和電阻R2的參數(shù)選擇合適,這個(gè)正脈沖的寬度就能達(dá)到8051復(fù)為脈沖的要求,即大于兩個(gè)機(jī)器周期。
當(dāng)常開(kāi)按鈕閉合時(shí),相當(dāng)于RST端通過(guò)電阻與VCC電源接通,提供足夠?qū)挾鹊幕蛑惦妷和瓿蓮?fù)位。單片機(jī)上復(fù)位后,振蕩器及時(shí)鐘發(fā)生器也同時(shí)開(kāi)始工作,CPU的工作時(shí)序從此開(kāi)始了。