新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 89S51的看門狗用法

        89S51的看門狗用法

        作者: 時間:2011-03-14 來源:網絡 收藏
        起作用的時候是不是只要同時寫O1EH和OE1H到特殊寄存器OA6H中就可以了呢?
        這是89S51的看門狗用法,S52應該是一樣的
        看門狗具體使用方法如下:
        在程序初始化中向看門狗寄存器(WDTRST地址是0A6H)中先寫入01EH,再寫入0E1H。即可激
        活看門狗。
        Org 0000 
        Ljmp begin
        Begin:
        Mov 0A6H,#01EH ;先送1E
        Mov 0A6H,#0E1H ;后送E1
        ;在程序初始化中激活看門狗。
        ……
        ……
        For:
        ……
        Mov 0A6H,#01EH ;先送1E
        Mov 0A6H,#0E1H ;后送E1
        ;喂狗指令
        ……
        Ljmp for
        C語言中要增加一個聲明語句。
        AT89X51.h聲明文件中增加一行 sfr WDTRST = 0xA6;
        Main()
        {
        WDTRST=0x1E;
        WDTRST=0xE1;//初始化看門狗。
        While (1)
        {
        WDTRST=0x1E;
        WDTRST=0xE1;//喂狗指令
        }
        }
        注意事項:
        1. 89S51的看門狗必須由程序激活后才開始工作。所以必須保證CPU有可靠的上電復位。否則看門狗也無法工作。
        2. 看門狗使用的是CPU的晶振。在晶振停振的時候看門狗也無效。
        3. 89S51只有14位計數器。在16383個機器周期內必須至少喂狗一次。而且這個時間是固定的,無法更改。
        當晶振為12M時每16個毫秒需喂狗一次。
        以上程序已調試通過。還利用定時器把看門狗的喂狗時間延長幾秒至幾分鐘。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 屏东县| 社旗县| 高雄市| 开远市| 武清区| 永善县| 山东| 昌邑市| 聂拉木县| 讷河市| 驻马店市| 大新县| 镇安县| 大姚县| 延川县| 台江县| 阿克陶县| 永善县| 汤阴县| 建德市| 五峰| 武隆县| 朝阳县| 遵义市| 进贤县| 乌兰县| 鹿邑县| 科尔| 揭阳市| 罗城| 滕州市| 平定县| 临湘市| 民丰县| 翼城县| 广德县| 龙山县| 金沙县| 黔江区| 阿瓦提县| 托克逊县|