復位是單片機的初始化操作,只需給AT89S51的復位引腳RST加上大于2個機器周期(即24個時鐘振蕩周期)的高電平就可使AT89S51復位。
復位操作
當AT89S51進行復位時,PC初始化為OOOOH,使AT89S51單片機從程序存儲器的OOOOH單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當程序運行出錯(如程序“跑飛”)或操作錯誤使系統(tǒng)處于“死鎖”狀態(tài)時,也需按復位鍵即RST腳為高電平,使AT89S51擺脫“跑飛”或“死鎖”狀態(tài)而重新啟動程序。
除PC之外,復位操作還對其他一些寄存器有影響,這些寄存器復位時的狀態(tài)見表2-7。由表2-7可以看出,復位時,SP-07H,而4個I/O端口PO~P3的引腳均為高電平。在某些控制應用中,要注意考慮PO~P3引腳的高電平對接在這些引腳上的外部電路的影響。例如,Pl口某個引腳外接一個繼電器繞組,當復位時,該引腳為高電平,繼電器繞組就會有電流通過,吸合繼電器開關,使開關接通,可能會引起意想不到的后果。
表2-7復位時片內各寄存器的狀態(tài)
復位電路設計
AT89S51的復位是由外部的復位電路實現的。AT89S51片內復位電路結構如圖2-17所示。
復位引腳RST通過一個施密特觸發(fā)器與復位電路相連,施密特觸發(fā)器用來抑制噪聲,在每個機器周期的S5P2:施密特觸發(fā)器的輸出電平由復位電路采樣一次,然后才能得到內部復位操作所需要的信號。
復位電路通常采用上電自動復位和按鈕復位兩種方式。
最簡單的上電自動復位電路如圖2-18所示。對于CMOS型單片機,由于在RST引腳內部有一個下拉電阻,故可將電阻R去掉,而將電容C選為10 μF。
上電自動復位是通過外部復位電路給電容C充電加至RST引腳一個短的高電平信號,此信號隨著VCC對電容C的充電過程而逐漸回落,即RST引腳上的高電平持續(xù)時間取決于電容C的充電時間。因此為保證系統(tǒng)能可靠地復位,RST引腳上的高電平必須維持足夠長的時間。
除了上電復位外,有時還需要按鍵手動復位。按鍵手動復位有電平和脈沖兩種方式。
按鍵手動電平復位是通過RST端經電阻與電源Vcc接通來實現,具體電路如圖2-19所示。當時鐘頻率選用6 MHz時,C的典型取值為10μF,R取值為2kΩ。
脈沖復位是利用RC微分電路產生的正脈沖來實現的,脈沖復位電路如圖2-20所示。圖中的阻容參數適于6 MHz時鐘。
圖2-21所示電路能輸出高、低兩種電平的復位控制信號,以適應外圍I/O接口芯片所要求的不同復位電平信號。圖2-21中,74LS122為單穩(wěn)電路。實驗表明,電容C選擇約為0.1μF較好。
在實際應用系統(tǒng)設計中,若有外部擴展的I/O接口電路也需初始復位,如果它們的復位端和AT89S51的復位端相連,復位電路中的R、C參數要受到影響,這時復位電路中的R、C參數要統(tǒng)一考慮,以保證可靠復位。如果AT89S51與外圍I/O接口電路的復位電路和復位時間不完全一致,使單片機初始化程序不能正常運行,外圍I/O接口電路的復位也可以不與AT89S51復位端相連,采用獨立的上電復位電路。若RC上電復位電路接施密特電路輸入端,施密特電路輸出接AT89S51和外圍電路復位端,則能使系統(tǒng)可靠地同步復位。一般來說,單片機的復位速度比外圍I/O接口電路快些。為保證系統(tǒng)可靠復位,在初始化程序中應安排一定的復位延遲時間。