80C51復(fù)位標(biāo)志位的設(shè)置與應(yīng)用分析
對(duì)于沒(méi)有配備備用電源的單片機(jī)應(yīng)用系統(tǒng),還可以考慮利用E2PROM在斷電之前的瞬間來(lái)轉(zhuǎn)存復(fù)位標(biāo)志位,以便在斷電之后也不會(huì)徹底消失。該情況下既可選用外掛E2PROM數(shù)據(jù)存儲(chǔ)器(如8腳串行的24C01、93C46或25C040等)的電路方案,也可選用內(nèi)部本身帶有E2PROM數(shù)據(jù)存儲(chǔ)器的單片機(jī)型號(hào),如AT89S8252等。這樣在斷電之前的瞬間,利用電源濾波電容C2上的少量殘留能量,即可完成對(duì)于E2PROM的燒寫操作。
一般的初始化程序段落的編寫方法很簡(jiǎn)單,不過(guò)它僅適用于那些要求不高、功能也很簡(jiǎn)單的單片機(jī)項(xiàng)目。這類項(xiàng)目(如一些小家電之類的單片機(jī)應(yīng)用)幾乎不存在很強(qiáng)的“過(guò)程性”或“不間斷性”,對(duì)于隨時(shí)可能發(fā)生的復(fù)位操作以及重新從頭運(yùn)行的用戶程序,不會(huì)帶來(lái)太大的影響或破壞性后果。
而對(duì)于“過(guò)程性”或“不間斷性”要求很強(qiáng)的單片機(jī)項(xiàng)目,一旦發(fā)生偶然性復(fù)位操作,并且重新從頭運(yùn)行用戶程序,那么將會(huì)帶來(lái)極大的負(fù)面影響或破壞性后果。例如,單片機(jī)控制的面包機(jī),在一次加工面包的過(guò)程中,會(huì)經(jīng)歷攪拌、加熱等工序;假若其間發(fā)生意外復(fù)位并且重新從頭執(zhí)行程序,則會(huì)導(dǎo)致成為廢品或者燒焦。電腦控制的手術(shù)機(jī)器人,在一次手術(shù)過(guò)程中如果發(fā)生意外復(fù)位并且返工,將會(huì)帶來(lái)難以想象的嚴(yán)重后果。電腦控制的導(dǎo)彈,在對(duì)準(zhǔn)目標(biāo)發(fā)射之后的飛行過(guò)程中,如果發(fā)生意外復(fù)位并且重新從頭執(zhí)行程序,那么將會(huì)產(chǎn)生難以預(yù)料的結(jié)果。
綜上所述,單片機(jī)在工作過(guò)程中,受到意外干擾而進(jìn)行復(fù)位操作,如果說(shuō)是不可避免的,那么復(fù)位之后從何處或在何種背景下開始運(yùn)行程序,則是可以人為安排的。因此,復(fù)位標(biāo)志位的應(yīng)用方法實(shí)質(zhì)上就是復(fù)位處理程序的編寫方法。復(fù)位處理程序的處理流程如圖2所示。
圖2 復(fù)位處理程序流程
類似于編寫UART串口通信中斷服務(wù)程序的思路,在進(jìn)入中斷程序之后首先要檢測(cè)中斷標(biāo)志位,看是一次接收中斷(RI=1)還是一次發(fā)送中斷(SI=1),然后再進(jìn)入不同程序分支進(jìn)行針對(duì)性服務(wù)。從圖2中可以看出,在從復(fù)位矢量0000H開始執(zhí)行用戶程序時(shí),首先應(yīng)該檢測(cè)復(fù)位標(biāo)志寄存器,判斷是電源初始加電還是其他復(fù)位源引起的復(fù)位或程序計(jì)數(shù)器PC清零。
?、?如果是電源初始加電,則進(jìn)行原始狀態(tài)的初始化。這種情況最簡(jiǎn)單。
② 如果屬于程序跑飛引起的軟件復(fù)位、軟硬件復(fù)位、非法地址復(fù)位,或者人工強(qiáng)行復(fù)位,則應(yīng)該依據(jù)具體情況盡量恢復(fù)數(shù)據(jù)或修正參數(shù),以便盡最大可能不影響或少影響程序的正常運(yùn)行(恢復(fù)和修正數(shù)據(jù)的具體算法這里不再深入探討)。
?、?如果是欠壓復(fù)位,則盡量從被打斷的程序斷點(diǎn)處重新開始執(zhí)行程序。具體的實(shí)現(xiàn)方法和步驟可以是: 復(fù)位之前——單片機(jī)響應(yīng)PFO中斷請(qǐng)求而進(jìn)入其服務(wù)程序后,保存堆棧指針SP當(dāng)前值到指定RAM單元,把單片機(jī)推入停機(jī)狀態(tài);復(fù)位之后——待電源恢復(fù)后,MAX813L得電而從RESET端送出高電平信號(hào),喚醒停機(jī)狀態(tài)下的單片機(jī)。若喚醒后的單片機(jī)再檢測(cè)到是欠壓復(fù)位,則首先復(fù)原先前的SP值,再利用一條RET(或RETI)指令彈出停機(jī)之前的程序斷點(diǎn)到PC,從而可以繼續(xù)執(zhí)行前面的任務(wù)。
評(píng)論