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