新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MCS51系列單片機軟件復位的方法

        MCS51系列單片機軟件復位的方法

        作者: 時間:2012-04-27 來源:網絡 收藏

        4. 在所有指令中,只有RETI指令能清除中斷激活標志。出錯處理程序ERR主要是完成這一功能,其它的善后工作交由后的系統去完成。為此,我們重新設計T1中斷子程序如下所示:

        PT1:?。茫校獭。校保病?;高級中斷程序發光二極管閃爍

        INC?。常埃取?;WATCHDOG計數器增值

        MOV?。?,30H

        ADD A,#0FD

        JC?。牛遥摇。贿_到3次否?

        RETI

        ERR: CLR EA ;關中斷

        CLR?。痢?;準備地址(0000H)

        PUSH?。粒茫?p>PUSH?。粒茫?p>RETI ;清除中斷激活標志并

        這段程序先關中斷,以便后續處理能順利進行,然后用RETI指令替代LJMP指令,從而既清除了中斷激活標志又完成了轉向0000H的任務。按這樣改好后程序再運行,結果仍不理想:按下按鈕后,有時只有主程序和高級中斷子程序能迅速恢復正常,而低級中斷仍有被關閉的可能。如果按如下把干擾轉移到低級中斷中,則按下按鈕后低級中斷必然被關閉:

        LOOP:?。茫校獭。校保?p>MOV?。遥?,#80H

        MOV?。遥罚#埃?p>TT1: DJNZ?。遥?,TT1

        DJNZ?。遥叮裕裕?p>SJMP LOOP

        PT0:?。茫校獭。校保?p>JB 00H,STOP

        RETI

        STOP: LJMP?。樱裕希小?;掉入死循環。

        仔細分析后可能得出結論:當WATCHDOG是嵌套在低級中斷中起作用時,復位后只清除了高級中斷激活標志,低級中斷標志仍然被置位,從而使低級中斷一直被關閉。

        5. 修改出錯處理如下:

        ERR: CLR EA?。徽_的復位入口

        MOV?。叮叮?,#0AAH?。恢亟ㄉ想姌酥?p>MOV?。叮罚龋#担担?p>MOV?。模校裕?,#ERR1 ;準備第一次返回地址

        PUSH?。模校?p>PUSH DPH

        RETI??;清除高級中斷激活標志

        ERR1: CLR?。?p>PUSH ACC

        PUSH?。粒茫?p>RETI??;清除低級中斷激活標志



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 来宾市| 临湘市| 固镇县| 仁怀市| 墨竹工卡县| 马公市| 金溪县| 银川市| 满洲里市| 西畴县| 北安市| 龙游县| 怀宁县| 响水县| 新巴尔虎右旗| 宣城市| 平定县| 大悟县| 上虞市| 襄垣县| 南宁市| 西青区| 马关县| 基隆市| 广丰县| 兴安县| 孟村| 甘德县| 昌图县| 奈曼旗| 图们市| 额敏县| 五家渠市| 峡江县| 资溪县| 汉沽区| 温泉县| 濮阳市| 庆云县| 丹东市| 新竹市|