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