




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、0c51復(fù)位標(biāo)志位的設(shè)置與應(yīng)用分析引言設(shè)査復(fù)位標(biāo)志位便于區(qū)分不同原因引發(fā)的復(fù)位,作為一種新技術(shù)被越來越多的新型單片 機(jī)所采納。例如philips公司的p87lpc700和p89lpc900系列、freescale公司(原motorola 半導(dǎo)體部)的mc68hc05系列和mc68hc08系列、sunplus公司的spmc65系列、 microchip公司的pic系列等,內(nèi)部都設(shè)計(jì)了專門用于記錄各種復(fù)位標(biāo)志的狀態(tài)寄存器。mc68hc08系列冇一個(gè)復(fù)位狀態(tài)寄存器,負(fù)責(zé)記錄6種復(fù)位標(biāo)志位:上電復(fù)位、弓i腳 復(fù)位、看門狗復(fù)位、非法指令復(fù)位、非法地址復(fù)位和欠壓復(fù)位。spmc65系列有一個(gè)系統(tǒng) 控制寄存器
2、,負(fù)責(zé)記錄5種復(fù)位標(biāo)志位:上電復(fù)位、外部復(fù)位、看門狗復(fù)位、非法地址復(fù) 位和欠壓復(fù)位。51兼容的p89lpc900系列有一個(gè)復(fù)位源寄存器,負(fù)責(zé)記錄6種復(fù)位標(biāo)志 位:欠壓復(fù)位、上電復(fù)位、外部復(fù)位、看門狗復(fù)位、軟件復(fù)位和uart收到間隔字符復(fù)位 (主要作為進(jìn)入isp監(jiān)控程序的途徑z)。就連初學(xué)者很常用的at89s51/52和 p89c52x2,也在其電源控制寄存器pcon中增設(shè)了一個(gè)上電標(biāo)志位pof。1復(fù)位標(biāo)志位的設(shè)置方法傳統(tǒng)的80c51單片機(jī)沒冇設(shè)計(jì)復(fù)位標(biāo)志位的記錄功能,這應(yīng)該說是一種遺憾,那么能 否通過一定的技術(shù)手段來彌補(bǔ)這個(gè)缺憾呢?這里給廣大80c51單片機(jī)用戶提供一種啟示和 引導(dǎo)。實(shí)現(xiàn)復(fù)位標(biāo)
3、志位的記錄肯定需耍一定的碩件電路支持,而這種電路的設(shè)計(jì)不存在固定模 式。筆者利用一片max813l設(shè)計(jì)了一種支撐電路,如圖1所示,僅供讀者參考。未穩(wěn)定宜流電底7805+5 v穩(wěn)定直流電壓+lc2輸出復(fù)位信號hloopfpfimax813lwdopfogndgi |r?- j resetmrwd1swifrst vgp1.0p1.1into 80c51psenwdr(p12)lvr(b1.3) mrst(pl4)gnd圖1 80c51設(shè)置復(fù)位標(biāo)志的支撐電路在圖1中,應(yīng)用了一個(gè)4輸入端“與非”門g1和一個(gè)按鈕開關(guān)sw1,還占用了 80c51的5條i/o引腳p1.0p1.4以及一個(gè)外部中斷源into
4、,并且預(yù)先通過初始化軟件設(shè)置into為唯一的高級屮斷源,卜降沿觸發(fā)方式有效,開放總屮斷使能位ea。平時(shí)g1因各輸入端部維持在高電平上,因而其輸出端也保持高電平。電路屮利用了一個(gè)海雖電容器c1作為儲 存能雖的器件,扮演著備用電池的角色。由于二極管d1的存在,在主電源斷電期間,c1 僅為單片機(jī)供電,應(yīng)該讓這吋的80c51進(jìn)入耗能最低的停機(jī)狀態(tài)(pd模式)。在圖1電路的基礎(chǔ)上配合必要的用戶軟件,就可以在7種不同復(fù)位源引起復(fù)位z后保 存6個(gè)標(biāo)志位來記錄7種復(fù)位標(biāo)志,以下分別進(jìn)行講解。對以事先在ram的位尋址區(qū)間分 配一個(gè)字節(jié),例如20h單元,用于記錄6個(gè)復(fù)位標(biāo)志位,如表1所列。表1用戶定義的系統(tǒng)復(fù)位標(biāo)
5、志寄存器(srfr)世乍bit7bil6bil5bit4bii3bit2billbito位名00mrstlvrwdriarsurswr位地址27h2611251124112311221121 ii2011假設(shè)該寄存器定名為srfr (system reset flag register),字節(jié)地址為20h, 8位 當(dāng)中僅利用了 6位,bit5bit0分別記錄人工復(fù)位、欠壓復(fù)位、看門狗復(fù)位、非法地址復(fù)位、 軟硬件復(fù)位和軟件復(fù)位。 mrst:人工復(fù)位。當(dāng)復(fù)位按鈕sw1被按下時(shí)引發(fā)into中斷;在中斷服務(wù)程序 中檢測輸入引腳p1.4的狀態(tài)。如果p1.4=0,貝ij置位mrst,記錄下曾經(jīng)發(fā)生了一次人
6、工 復(fù)位操作。然后進(jìn)行一次主動的復(fù)位操作,方法是從輸出腳p1.0輸出一個(gè)低電平給 max813l的輸入引腳mr,經(jīng)max813l延時(shí)后從輸出端reset送出髙電平復(fù)位信號給 80c51,令其進(jìn)行一次硬件復(fù)位操作。 lvr:欠壓復(fù)位。當(dāng)上游電源電壓開始跌落并且下降到max813l的pfi檢測門 限以下,輸出端pfo送出低電平,引發(fā)into中斷;在中斷服務(wù)程序中檢測輸入引腳p1.3 的狀態(tài)。如果p1.3=0,則置位lvr,記錄下曾經(jīng)發(fā)生了一次欠壓復(fù)位操作;然后進(jìn)行一次 主動的復(fù)位操作(方法同上),或者令單片機(jī)進(jìn)入停機(jī)狀態(tài),以便節(jié)省能耗和保持?jǐn)?shù)據(jù),以 及等待主電源的恢復(fù)。 wdr:看門狗復(fù)位。當(dāng)發(fā)生
7、看門狗溢出時(shí),max813l的輸出端wdo送岀低電 平,引發(fā)into中斷;在中斷服務(wù)程序中檢測輸入引腳p1.2的狀態(tài)。如果p1.2=0,則置位 wdr,記錄下曾經(jīng)發(fā)生了一次看門狗復(fù)位操作;然示進(jìn)行一次主動的復(fù)位操作(方法同上)。 喂狗操作利用了一個(gè)i/o引腳p1.1o iar:非法地址復(fù)位。當(dāng)發(fā)生非法地址時(shí),80c51的輸出端psen送出低電平瞬 時(shí)脈沖,也會引發(fā)一次into中斷;在中斷服務(wù)程序中檢測輸入引腳p1.4-p1.2的狀態(tài)。如 «p1.4-p1.2=111,則置位iar,表示發(fā)生了一次非法地址復(fù)位操作;然后進(jìn)行一次主動 的復(fù)位操作(方法同上)。shr:軟換件復(fù)位。當(dāng)發(fā)牛了軟
8、件陷阱的捕捉事件,或者軟件看門狗的溢出事件 時(shí),可以肓接置位shr,代表發(fā)生了一次軟硬件復(fù)位操作;然后進(jìn)行一次主動的復(fù)位操作(方法同上)。如果利用to作軟件wdt,則應(yīng)該同時(shí)設(shè)置into和to中斷源為高級中斷。swr:軟件復(fù)位。當(dāng)發(fā)生了軟件陷阱的捕捉事件,或者軟件看門狗的溢出事件時(shí), 也可以直接置位swr,代表發(fā)生了一次軟件復(fù)位操作;然后調(diào)用軟件復(fù)位程序swrst即 可。軟件復(fù)位程序的編寫方法如下:swrst:;定義軟件復(fù)位程序的實(shí)際入口地址clrea;首先關(guān)閉中斷源總使能位setbfo;設(shè)置一個(gè)軟件復(fù)位標(biāo)志位movpo, #offh;設(shè)定通用端口 p0為高阻輸入狀態(tài)movp1, #offh;
9、設(shè)定通丿i端口 p1為高阻輸入狀態(tài)movp2, #offh;設(shè)定通用端口 p2為高阻輸入狀態(tài)movp3, #offh;設(shè)定通用端口 p3為髙阻輸入狀態(tài)movpsw, #00h;設(shè)定程序狀態(tài)字寄存器為原始值:(根據(jù)需要還可初始化其他sfr)movdptr, #swr0;為reti準(zhǔn)備彈出地址,而又不改變;執(zhí)行順序pushdpl;壓棧低字節(jié),在先pushdph;壓棧高字節(jié),在后reti:中斷返回指令,清除高級中斷激活觸:發(fā)器swr0:clra;準(zhǔn)備復(fù)位地址pushacc;壓棧低字節(jié)00hpushacc;壓棧高字節(jié)00hreti;清除低級中斷激活觸發(fā)器,并跳到;0000hpor:電源上電復(fù)位。雖然在
10、用戶定義的系統(tǒng)復(fù)位標(biāo)志寄存器(srfr)中,沒 有直接設(shè)置一個(gè)por標(biāo)志位,但是如果檢測以上6個(gè)標(biāo),忐位同吋為0,則表明此前進(jìn)行的 是一次上電復(fù)位。理由是,經(jīng)過實(shí)驗(yàn)驗(yàn)證(實(shí)驗(yàn)所用的單片機(jī)型號為sst89c58),在每 次初次加電時(shí),包含ram的20h單元在內(nèi)的80c51內(nèi)部ram區(qū)間(00h-7fh),具內(nèi) 容全部口動清零;在每次rst引腳復(fù)位(或者軟件復(fù)位)時(shí),其內(nèi)容維持不變。而各個(gè)sfr 無論是上電復(fù)位還是rst引腳復(fù)位時(shí),均被還原為原始值(乂稱復(fù)位值),如表2所列。表2片內(nèi)可改寫存儲器空間復(fù)位情況表2片內(nèi)可改寫存儲器空間復(fù)位情況存儲佛空f»j類型上電父位rst引腳父位轅杵復(fù)位r
11、/m維持不交維持不芟ser維持不竇對于那些僅增設(shè)了一個(gè)復(fù)位標(biāo)志位(技術(shù)手冊中記作pof)的較新型單片機(jī)(如 at89s51/52> at89s8252、at89c53、at89c55wd、at89c51rc 和p89c51x2/52x2/54x2/58x2等型號),也恰好不再需要這里所設(shè)置的por標(biāo)志位了。対于沒有配備備用電源的單片機(jī)應(yīng)用系統(tǒng),還可以考慮利用e2prom在斷電之前的瞬 間來轉(zhuǎn)存復(fù)位標(biāo)志位,以便在斷電z后也不會徹底消失。該情況下既可選用外掛e2prom 數(shù)據(jù)存儲器(如8腳串行的24c01、93c46或25c040等)的電路方案,也可選用內(nèi)部本 身帶有e2prom數(shù)據(jù)存儲器的
12、單片機(jī)型號,如at89s8252等。這樣在斷電之前的瞬間, 利用電源濾波電容c2上的少量殘留能量,即可完成對于e2prom的燒寫操作。2復(fù)位標(biāo)志位的應(yīng)用方法一般的初始化程序段落的編寫方法很簡單,不過它僅適用于那些耍求不高、功能也很簡 單的單片機(jī)項(xiàng)目。這類項(xiàng)目(如一些小家電之類的單片機(jī)應(yīng)用)兒乎不存在很強(qiáng)的“過程性” 或“不間斷性”,對于隨時(shí)可能發(fā)生的復(fù)位操作以及重新從頭運(yùn)行的用戶程序,不會帶來太大 的影響或破壞性后果。而対于“過程性”或“不間斷性”要求很強(qiáng)的單片機(jī)項(xiàng)目,一旦發(fā)牛偶然性復(fù)位操作,并且 重新從頭運(yùn)行用戶程序,那么將會帶來極大的負(fù)面影響或破壞性后果。例如,單片機(jī)控制的 而包機(jī),在一次
13、加工面包的過程中,會經(jīng)歷攪拌、加熱等工序;假若其間發(fā)生意外復(fù)位并且 重新從頭執(zhí)行程序,則會導(dǎo)致成為廢晶或者燒焦。電腦控制的于術(shù)機(jī)器人,在一次手術(shù)過程 小如果發(fā)住意外復(fù)位并且返工,將會帶來難以想象的嚴(yán)重后果。電腦控制的導(dǎo)彈,在對準(zhǔn)目 標(biāo)發(fā)射之后的飛行過程屮,如果發(fā)生意外復(fù)位并且重新從頭執(zhí)行程序,那么將會產(chǎn)生難以預(yù) 料的結(jié)果。綜上所述,單片機(jī)在工作過程屮,受到意外干擾而進(jìn)行復(fù)位操作,如果說是不可避免的, 那么復(fù)位z后從何處或在何種背景下開始運(yùn)行程序,則是可以人為安排的。因此,復(fù)位標(biāo)志 位的應(yīng)用方法實(shí)質(zhì)上就是復(fù)位處理程序的編寫方法。復(fù)位處理程序的處理流程如圖2所示。從000011開蛤執(zhí)行稈序檢測系統(tǒng)
14、復(fù)位標(biāo)志荒存器srtr主程序的主循環(huán)圖2復(fù)位處理程序流程類似于編寫uart串口通信中斷服務(wù)程序的思路,在進(jìn)入中斷程序之后首先要檢測中 斷標(biāo)志位,看是一次接收中斷(rit)還是一次發(fā)送中斷(sl=1),然后再進(jìn)入不同程序 分支進(jìn)行針對性服務(wù)。從圖2中可以看出,在從復(fù)位矢最0000h開始執(zhí)行用戶程序時(shí),首 先應(yīng)該檢測復(fù)位標(biāo)志寄存器,判斷是電源初始加電還是英他復(fù)位源引起的復(fù)位或程序計(jì)數(shù)器 pc清零。 如果是電源初始加電,則進(jìn)行原始狀態(tài)的初始化。這種情況最簡單。 如果屬于程序跑飛引起的軟件復(fù)位、軟硬件復(fù)位、非法地址復(fù)位,或者人工強(qiáng)行復(fù) 位,則應(yīng)該依據(jù)具體情況盡量恢復(fù)數(shù)據(jù)或修正參數(shù),以便盡最大可能不影響或少影響程序的 正常運(yùn)行(恢復(fù)和修正數(shù)據(jù)的具體算法這里不再深入探討)。 如果是欠壓復(fù)位,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025新疆西北興業(yè)城投集團(tuán)有限公司崗位招聘26人筆試參考題庫附帶答案詳解
- 裝表接電工考試題及參考答案
- 2025小紅書乙巳蛇年CNY【大家的春節(jié)】專項(xiàng)招商方案-38正式版
- 2025年氯鉑酸項(xiàng)目發(fā)展計(jì)劃
- 2025中國儲備糧管理集團(tuán)有限公司信息化運(yùn)維中心招聘14人筆試參考題庫附帶答案詳解
- 《單片機(jī)原理及接口技術(shù)-基于C51+Proteus仿真(第二版)》全套教學(xué)課件
- 人教版高中地理選擇性必修1第二章第一節(jié)第1課時(shí)內(nèi)力作用與外力作用課件
- 2025年非公路礦用車項(xiàng)目合作計(jì)劃書
- 工程機(jī)械操作安全培訓(xùn)
- 超市節(jié)假日活動促銷方案
- 2024版心肺復(fù)蘇急救知識培訓(xùn)
- 酒店開業(yè)前期宣傳方案(2篇)
- G -B- 16914-2023 燃?xì)馊紵骶甙踩夹g(shù)條件(正式版)
- 壓瘡的分期與護(hù)理(模板)
- 2024年遼寧醫(yī)藥職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- JB-QGL-TX3016AJB-QTL-TX3016A火災(zāi)報(bào)警控制器安裝使用說明書
- 《臺海危機(jī)》課件
- 部編版小學(xué)語文一年級下冊第三單元大單元教學(xué)設(shè)計(jì)教材分析
- MOOC 數(shù)據(jù)庫系統(tǒng)(中):建模與設(shè)計(jì)-哈爾濱工業(yè)大學(xué) 中國大學(xué)慕課答案
- 2024年湖南食品藥品職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 2024年江蘇醫(yī)藥職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
評論
0/150
提交評論