80C51單片機(jī)上電復(fù)位和復(fù)位延時(shí)的時(shí)序分析
由于標(biāo)準(zhǔn)80C51的復(fù)位邏輯相對(duì)簡(jiǎn)單,復(fù)位源只有RST一個(gè)(相對(duì)新型單片機(jī)來(lái)說(shuō),復(fù)位源比較單一),因此各種原因所導(dǎo)致的復(fù)位活動(dòng)以及復(fù)位狀態(tài)的進(jìn)入,都要依靠在外接引腳RST上施加一定時(shí)間寬度的高電平信號(hào)來(lái)實(shí)現(xiàn)。
標(biāo)準(zhǔn)80C51不僅復(fù)位源比較單一,而且還沒有設(shè)計(jì)內(nèi)部上電復(fù)位的延時(shí)功能,因此必須借助于外接阻容支路來(lái)增加延時(shí)環(huán)節(jié),如圖3(a)所示。其實(shí),外接電阻R還是可以省略的,理由是一些CMOS單片機(jī)芯片內(nèi)部存在一個(gè)現(xiàn)成的下拉電阻Rrst。例如,AT89系列的Rrst阻值約為50~200 kΩ;P89V51Rx2系列的Rrst阻值約為40~225 kΩ,如圖4所示。因此,在圖3(a)基礎(chǔ)上,上電復(fù)位延時(shí)電路還可以精簡(jiǎn)為圖3(b)所示的簡(jiǎn)化電路(其中電容C的容量也相應(yīng)減小了)。
圖4 復(fù)位引腳RST內(nèi)部電路
在每次單片機(jī)斷電之后,須使延時(shí)電容C上的電荷立刻放掉,以便為隨后可能在很短的時(shí)間內(nèi)再次加電作好準(zhǔn)備。否則,在斷電后C還沒有充分放電的情況下,如果很快又加電,那么RC支路就失去了它應(yīng)有的延遲功能。因此,在圖3(a)的基礎(chǔ)上添加一個(gè)放電二極管D,上電復(fù)位延時(shí)電路就變成了如圖3(c)所示的改進(jìn)電路。也就是說(shuō),只有RC支路的充電過(guò)程對(duì)電路是有用的,放電過(guò)程不僅無(wú)用,而且會(huì)帶來(lái)潛在的危害。于是附加一個(gè)放電二極管D來(lái)大力縮短放電持續(xù)時(shí)間,以便消除隱患。二極管D只有在單片機(jī)斷電的瞬間(即VCC趨近于0 V,可以看作VCC對(duì)地短路)正向?qū)?,平時(shí)一直處于反偏截止?fàn)顟B(tài)。
3 上電復(fù)位失敗的2種案例分析
假如上電復(fù)位延遲時(shí)間不夠或者根本沒有延時(shí)過(guò)程,則單片機(jī)可能面臨以下2種危險(xiǎn),從而導(dǎo)致CPU開始執(zhí)行程序時(shí)沒有一個(gè)良好的初始化,甚至陷入錯(cuò)亂狀態(tài)。
① 在時(shí)鐘振蕩器輸出的時(shí)鐘脈沖還沒有穩(wěn)定,甚至還沒有起振之前,就因釋放RST信號(hào)的鎖定狀態(tài)而放縱CPU開始執(zhí)行程序。這將會(huì)導(dǎo)致程序計(jì)數(shù)器PC中首次抓取的地址碼很可能是0000H之外的隨機(jī)值,進(jìn)而引導(dǎo)CPU陷入混亂狀態(tài)。參考圖5所示的實(shí)測(cè)信號(hào)曲線。
圖5 在時(shí)鐘未穩(wěn)定前釋放RST的情況
② 在電源電壓還沒有上升到合適范圍之前(自然也是時(shí)鐘尚未穩(wěn)定之前),就釋放RST信號(hào)的鎖定狀態(tài),將會(huì)使單片機(jī)永遠(yuǎn)感受不到復(fù)位信號(hào)、經(jīng)歷不到復(fù)位過(guò)程、包含PC在內(nèi)的各個(gè)SFR內(nèi)容沒有被初始化而保留了隨機(jī)值,從而導(dǎo)致CPU從一個(gè)隨機(jī)地址開始執(zhí)行程序,進(jìn)而也陷入混亂狀態(tài)。參考圖6所示的實(shí)測(cè)信號(hào)曲線。
圖6 在電源和時(shí)鐘均未穩(wěn)定前釋放RST的情況
評(píng)論