• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機看門狗電路簡介

    51單片機看門狗電路簡介

    作者: 時間:2012-08-03 來源:網絡 收藏

    采用89C51和X25045組成的,X25045硬件連接圖如圖2所示。X25045芯片內包含有一個狗定時器,可通過軟件預置系統的監控時間。在狗定時器預置的時間內若沒有總線活動,則X25045將從RESET輸出一個高電平信號,經過微分C2、R3輸出一個正脈沖,使CPU復位。圖2中,CPU的復位信號共有3個:上電復位(C1、R2),人工復位(S、R1、R2)和Watchdog復位(C2、R3),通過或門綜合后加到RESET端。C2、R3的時間常數不必太大,有數百微秒即可,因為這時CPU的振蕩器已經在工作。

    本文引用地址:http://www.czjhyjcfj.com/article/171072.htm


    圖2 X25045看門狗電路硬件連接圖

    看門狗定時器的預置時間是通過X25045的狀態寄存器的相應位來設定的。如表2所示,X25045狀態寄存器共有6位有含義,其中WD1、WD0和看門狗電路有關,其余位和EEPROM的工作設置有關。


    表2 X25045狀態寄存器

    WD1=0,WD0=0,預置時間為1.4s。
    WD1=0,WD0=1,預置時間為0.6s。
    WD1=1,WD0=0,預置時間為0.2s。
    WD1=1,WD0=1,禁止看門狗工作。

    看門狗電路的定時時間長短可由具體應用程序的循環周期決定,通常比系統正常工作時最大循環周期的時間略長即可。編程時,可在軟件的合適地方加一條喂狗指令,使看門狗的定時時間永遠達不到預置時間,系統就不會復位而正常工作。當系統跑飛,用軟件陷阱等別的方法無法捕捉回程序時,則看門狗定時時間很快增長到預置時間,迫使系統復位。

    以下是C語言編寫的看門狗程序部分。

    #include reg51.h
    sbit cs=P1^2;/*片選信號由P1.2產生*/
    sbit sck=P1^3; /*時鐘信號由P1.3 產生*/
    sbit si=P1^0; /*SI由P1.0產生*/
    sbit so=P1^1; /*SO由P1.1產生*/
    sbit c=ACC^7; /*定義位變量*/
    bdata unsigned char com;
    void tran() /*發送一字節數據子函數*/
    {
    unsigned char i;
    for(i=0; i8; i++)
    { ACC=com; /*將數據放入a中*/
    si=c;
    sck=0; /*sck產生一個上跳變*/
    sck=1;
    com=com1; /*左移一位*/
    }
    return;
    }
    main()
    {
    com=0x06; /*發寫讀使能命令*/
    cs=0;
    tran();
    cs=1;
    com=0x01; /*發寫狀態字命令*/
    cs=0;
    tran();
    com=0x00; /*定時1.4s*/
    tran();
    cs=1;
    ...;系統正常運行的程序部分
    }

    需要注意的是,在程序正常運行的時候,應該在適當的地方加一條喂狗指令,使系統正常運行時的定時時間達不到預置時間。系統就不會復位。喂狗指令如下。

    main()
    {
    ...;系統正常運行的程序部分
    {
    cs=0; /*產生cs脈沖*/
    cs=1;
    }
    }

    X25045的看門狗電路使用十分方便。X25045內部還集成了512BEEPROM和電壓運行監視系統,只需這樣一塊芯片,外加晶振和復位電路就可以組成的應用系統,非常適合于便攜式儀器和嵌入式系統的設計。

    DIY機械鍵盤相關社區:機械鍵盤DIY




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 罗山县| 遂川县| 吉林省| 连州市| 巴林右旗| 钟祥市| 万年县| 双鸭山市| 永泰县| 怀化市| 崇左市| 东城区| 蕉岭县| 山东| 凌源市| 南投市| 阳西县| 淮北市| 开江县| 南投县| 汶上县| 肥西县| 淳安县| 冀州市| 安阳市| 沛县| 凌源市| 腾冲县| 儋州市| 延边| 德令哈市| 龙泉市| 黎城县| 沂源县| 柳州市| 东城区| 河池市| 西安市| 资源县| 龙门县| 德州市|