新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 80C51復位標志位的設置與應用分析

        80C51復位標志位的設置與應用分析

        作者: 時間:2011-05-18 來源:網絡 收藏

          對于沒有配備備用電源的單片機系統,還可以考慮利用E2PROM在斷電之前的瞬間來轉存位,以便在斷電之后也不會徹底消失。該情況下既可選用外掛E2PROM數據存儲器(如8腳串行的24C01、93C46或25C040等)的電路方案,也可選用內部本身帶有E2PROM數據存儲器的單片機型號,如AT89S8252等。這樣在斷電之前的瞬間,利用電源濾波電容C2上的少量殘留能量,即可完成對于E2PROM的燒寫操作。

        2 位的方法

          一般的初始化程序段落的編寫方法很簡單,不過它僅適用于那些要求不高、功能也很簡單的單片機項目。這類項目(如一些小家電之類的單片機)幾乎不存在很強的“過程性”或“不間斷性”,對于隨時可能發生的操作以及重新從頭運行的用戶程序,不會帶來太大的影響或破壞性后果。

          而對于“過程性”或“不間斷性”要求很強的單片機項目,一旦發生偶然性復位操作,并且重新從頭運行用戶程序,那么將會帶來極大的負面影響或破壞性后果。例如,單片機控制的面包機,在一次加工面包的過程中,會經歷攪拌、加熱等工序;假若其間發生意外復位并且重新從頭執行程序,則會導致成為廢品或者燒焦。電腦控制的手術機器人,在一次手術過程中如果發生意外復位并且返工,將會帶來難以想象的嚴重后果。電腦控制的導彈,在對準目標發射之后的飛行過程中,如果發生意外復位并且重新從頭執行程序,那么將會產生難以預料的結果。

          綜上所述,單片機在工作過程中,受到意外干擾而進行復位操作,如果說是不可避免的,那么復位之后從何處或在何種背景下開始運行程序,則是可以人為安排的。因此,復位位的應用方法實質上就是復位處理程序的編寫方法。復位處理程序的處理流程如圖2所示。

        按此在新窗口瀏覽圖片
        圖2 復位處理程序流程

          類似于編寫UART串口通信中斷服務程序的思路,在進入中斷程序之后首先要檢測中斷標志位,看是一次接收中斷(RI=1)還是一次發送中斷(SI=1),然后再進入不同程序分支進行針對性服務。從圖2中可以看出,在從復位矢量0000H開始執行用戶程序時,首先應該檢測復位標志寄存器,判斷是電源初始加電還是其他復位源引起的復位或程序計數器PC清零。

          ① 如果是電源初始加電,則進行原始狀態的初始化。這種情況最簡單。

          ② 如果屬于程序跑飛引起的軟件復位、軟硬件復位、非法地址復位,或者人工強行復位,則應該依據具體情況盡量恢復數據或修正參數,以便盡最大可能不影響或少影響程序的正常運行(恢復和修正數據的具體算法這里不再深入探討)。

          ③ 如果是欠壓復位,則盡量從被打斷的程序斷點處重新開始執行程序。具體的實現方法和步驟可以是: 復位之前——單片機響應PFO中斷請求而進入其服務程序后,保存堆棧指針SP當前值到指定RAM單元,把單片機推入停機狀態;復位之后——待電源恢復后,MAX813L得電而從RESET端送出高電平信號,喚醒停機狀態下的單片機。若喚醒后的單片機再檢測到是欠壓復位,則首先復原先前的SP值,再利用一條RET(或RETI)指令彈出停機之前的程序斷點到PC,從而可以繼續執行前面的任務。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 杭锦后旗| 扎赉特旗| 铜梁县| 高邮市| 江山市| 龙门县| 陇川县| 黔西| 林周县| 县级市| 财经| 浪卡子县| 陆丰市| 赣州市| 吉木乃县| 大邑县| 南汇区| 资中县| 巴彦淖尔市| 西盟| 长乐市| 巴楚县| 山东省| 张家川| 同江市| 孟州市| 金昌市| 天气| 左云县| 庄河市| 邹平县| 铜陵市| 禹城市| 柳江县| 肇庆市| 尤溪县| 延寿县| 沙雅县| 简阳市| 东至县| 右玉县|