新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STC12C2052AD 系列單片機的看門狗

        STC12C2052AD 系列單片機的看門狗

        作者: 時間:2016-11-13 來源:網絡 收藏
        ;本程序用于驗證 STC12C2052AD 系列單片機看門狗及其溢出時間計算公式
        ;看門狗及其溢出時間 = (12 * Pre_scale *32768)/Oscillator frequency

        WDTCR EQU 0E1H ;看門狗地址
        WDT_TIME_LED EQU P1.5 ;用 P1.5 控制看門狗溢出時間指示燈,
        ;看門狗溢出時間可由該指示燈亮的時間長度或熄滅的時間長度表示
        WDT_FLAG_LED EQU P1.7 ;用 P1.7 控制看門狗溢出復位指示燈, 如點亮表示為看門狗溢出復位

        Last_WDT_Time_LED_Status EQU 00H ;位變量, 存儲看門狗溢出時間指示燈的上一次狀態位

        ;WDT 復位時間(Oscillator frequency = 18.432MHz):
        ;Pre_scale_Word EQU 00111100B ;清0、啟動看門狗,預分頻數=32 0.68S
        Pre_scale_Word EQU 00111101B ;清0、啟動看門狗,預分頻數=64 1.36S
        ;Pre_scale_Word EQU 00111110B ;清0、啟動看門狗,預分頻數=128 2.72S
        ;Pre_scale_Word EQU 00111111B ;清0、啟動看門狗,預分頻數=256 5.44S

        ORG 0000H
        AJMP MAIN

        ORG 0100H
        MAIN:
        MOV A, WDTCR ;檢測是否為看門狗復位
        ANL A, #10000000B
        JNZ WDT_Reset ;WDTCR.7 = 1, 看門狗復位, 跳轉到看門狗復位程序

        ;上電復位, 冷啟動, RAM 單元內容為隨機值
        SETB Last_WDT_Time_LED_Status ;上電復位,
        ;初始化看門狗溢出時間指示燈的狀態位 = 1
        CLR WDT_TIME_LED ;上電復位, 點亮看門狗溢出時間指示燈
        MOV WDTCR, #Pre_scale_Word ;啟動看門狗

        WAIT1:
        SJMP WAIT1 ;循環執行本語句(停機),等待看門狗溢出復位

        ;看門狗復位, 熱啟動, RAM 單元內容不變, 為復位前的值
        WDT_Reset: ;看門狗復位, 熱啟動
        CLR WDT_FLAG_LED ;點亮看門狗溢出復位指示燈

        JB Last_WDT_Time_LED_Status, Power_Off_WDT_TIME_LED
        ;根據看門狗溢出時間指示燈的上一次狀態位設置 WDT_TIME_LED 燈,
        ;若上次亮本次就熄滅, 若上次熄滅本次就亮
        CLR WDT_TIME_LED ;上次熄滅本次點亮看門狗溢出時間指示燈
        CPL Last_WDT_Time_LED_Status ;將看門狗溢出時間指示燈的上一次狀態位取反
        WAIT2:
        SJMP WAIT2 ;循環執行本語句(停機),等待看門狗溢出復位

        Power_Off_WDT_TIME_LED:
        SETB WDT_TIME_LED ;上次亮本次就熄滅看門狗溢出時間指示燈
        CPL Last_WDT_Time_LED_Status ;將看門狗溢出時間指示燈的上一次狀態位取反
        WAIT3:
        SJMP WAIT3 ;循環執行本語句(停機),等待看門狗溢出復位

        END


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 巴青县| 陕西省| 中西区| 青冈县| 平安县| 涞源县| 兴业县| 中阳县| 寿宁县| 珲春市| 克拉玛依市| 阿城市| 汉源县| 饶平县| 增城市| 郓城县| 紫金县| 吉安市| 肇源县| 津南区| 丰宁| 富顺县| 南昌市| 德钦县| 青浦区| 景东| 许昌县| 恭城| 洪泽县| 黎城县| 龙门县| 肃北| 宝应县| 安岳县| 禄丰县| 乐亭县| 邵武市| 新乡县| 太和县| 将乐县| 隆子县|