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