80C51復(fù)位標(biāo)志位的設(shè)置與應(yīng)用研究
發(fā)布時(shí)間:2008/6/3 0:00:00 訪問次數(shù):1029
    
    
    作者:李學(xué)海 劉治山
    
    引言
    
    設(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ù)位、引腳復(fù)位、看門狗復(fù)位、非法指令復(fù)位、非法地址復(fù)位和欠壓復(fù)位。spmc65系列有一個(gè)系統(tǒng)控制寄存器,負(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)控程序的途徑之一)。就連初學(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)志位的記錄肯定需要一定的硬件電路支持,而這種電路的設(shè)計(jì)不存在固定模式。筆者利用一片max813l設(shè)計(jì)了一種支撐電路,如圖1所示,僅供讀者參考。
    
    
    
    圖1 80c51設(shè)置復(fù)位標(biāo)志的支撐電路
    
    在圖1中,應(yīng)用了一個(gè)4輸入端“與非”門g1和一個(gè)按鈕開關(guān)sw1,還占用了80c51的5條i/o引腳p1.0~p1.4以及一個(gè)外部中斷源 int0,并且預(yù)先通過初始化軟件設(shè)置int0為唯一的高級中斷源,下降沿觸發(fā)方式有效,開放總中斷使能位ea。平時(shí)g1因各輸入端都維持在高電平上,因而其輸出端也保持高電平。電路中利用了一個(gè)海量電容器c1作為儲存能量的器件,扮演著備用電池的角色。由于二極管d1的存在,在主電源斷電期間,c1僅為單片機(jī)供電,應(yīng)該讓這時(shí)的80c51進(jìn)入耗能最低的停機(jī)狀態(tài)(pd模式)。
    
    在圖1電路的基礎(chǔ)上配合必要的用戶軟件,就可以在7種不同復(fù)位源引起復(fù)位之后保存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)志寄存器(srfr)
    
    假設(shè)該寄存器定名為srfr(system reset flag register),字節(jié)地址為20h,8位當(dāng)中僅利用了6位,bit5~bit0分別記錄人工復(fù)位、欠壓復(fù)位、看門狗復(fù)位、非法地址復(fù)位、軟硬件復(fù)位和軟件復(fù)位。
    
    ① mrst:人工復(fù)位。當(dāng)復(fù)位按鈕sw1被按下時(shí)引發(fā)int0中斷;在中斷服務(wù)程序中檢測輸入引腳p1.4的狀態(tài)。如果p1.4=0,則置位mrst,記錄下曾經(jīng)發(fā)生了一次人工復(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ā)int0中斷;在中斷服務(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ā)生看門狗溢出時(shí),max813l的輸出端wdo送出低電平,引發(fā)int0中斷;在中斷服務(wù)程序中檢測輸入引腳p1.2的狀態(tài)。如果 p1.2=0,
    
    
    作者:李學(xué)海 劉治山
    
    引言
    
    設(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ù)位、引腳復(fù)位、看門狗復(fù)位、非法指令復(fù)位、非法地址復(fù)位和欠壓復(fù)位。spmc65系列有一個(gè)系統(tǒng)控制寄存器,負(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)控程序的途徑之一)。就連初學(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)志位的記錄肯定需要一定的硬件電路支持,而這種電路的設(shè)計(jì)不存在固定模式。筆者利用一片max813l設(shè)計(jì)了一種支撐電路,如圖1所示,僅供讀者參考。
    
    
    
    圖1 80c51設(shè)置復(fù)位標(biāo)志的支撐電路
    
    在圖1中,應(yīng)用了一個(gè)4輸入端“與非”門g1和一個(gè)按鈕開關(guān)sw1,還占用了80c51的5條i/o引腳p1.0~p1.4以及一個(gè)外部中斷源 int0,并且預(yù)先通過初始化軟件設(shè)置int0為唯一的高級中斷源,下降沿觸發(fā)方式有效,開放總中斷使能位ea。平時(shí)g1因各輸入端都維持在高電平上,因而其輸出端也保持高電平。電路中利用了一個(gè)海量電容器c1作為儲存能量的器件,扮演著備用電池的角色。由于二極管d1的存在,在主電源斷電期間,c1僅為單片機(jī)供電,應(yīng)該讓這時(shí)的80c51進(jìn)入耗能最低的停機(jī)狀態(tài)(pd模式)。
    
    在圖1電路的基礎(chǔ)上配合必要的用戶軟件,就可以在7種不同復(fù)位源引起復(fù)位之后保存6個(gè)標(biāo)志位來記錄7種復(fù)位標(biāo)志,以下分別進(jìn)行講解?梢允孪仍趓am的位尋址區(qū)間分配一個(gè)字節(jié),例如20h單元,用于記錄6個(gè)復(fù)位標(biāo)志位,如表1所列。
    
    
    
    表1 用戶定義的系統(tǒng)復(fù)位標(biāo)志寄存器(srfr)
    
    假設(shè)該寄存器定名為srfr(system reset flag register),字節(jié)地址為20h,8位當(dāng)中僅利用了6位,bit5~bit0分別記錄人工復(fù)位、欠壓復(fù)位、看門狗復(fù)位、非法地址復(fù)位、軟硬件復(fù)位和軟件復(fù)位。
    
    ① mrst:人工復(fù)位。當(dāng)復(fù)位按鈕sw1被按下時(shí)引發(fā)int0中斷;在中斷服務(wù)程序中檢測輸入引腳p1.4的狀態(tài)。如果p1.4=0,則置位mrst,記錄下曾經(jīng)發(fā)生了一次人工復(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ā)int0中斷;在中斷服務(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ā)生看門狗溢出時(shí),max813l的輸出端wdo送出低電平,引發(fā)int0中斷;在中斷服務(wù)程序中檢測輸入引腳p1.2的狀態(tài)。如果 p1.2=0,
熱門點(diǎn)擊
- 基于AT89C51型單片機(jī)的號音自動播放器設(shè)
- 基于S3C2410的RTC模塊應(yīng)用設(shè)計(jì)
- 基于AT89C4051單片機(jī)的專用信號發(fā)生器
- 基于IIC1.0的時(shí)鐘芯片應(yīng)用程序設(shè)計(jì)
- 80C51復(fù)位標(biāo)志位的設(shè)置與應(yīng)用研究
- 一種基于單片機(jī)的新型線陣CCD電路
- 一種基于單片機(jī)的正弦波輸出逆變電源的設(shè)計(jì)
- PIC單片機(jī)引腳中斷程序的設(shè)計(jì)技巧
- 基于凌陽SPCE061A的頻率測量計(jì)
- 變頻空調(diào)電控系統(tǒng)的設(shè)計(jì)
推薦技術(shù)資料
- 分立器件&無源元件選型及工作原
- 新一代“超越EUV”光刻系統(tǒng)參
- 最新品BAT激光器制造工藝設(shè)計(jì)
- 新款汽車SoC產(chǎn)品Malibo
- 新芯片品類FPCU(現(xiàn)場可編程
- 電動汽車動力總成系統(tǒng)̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究