新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)看門狗電路

        51單片機(jī)看門狗電路

        作者: 時(shí)間:2011-05-05 來源:網(wǎng)絡(luò) 收藏

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

        本文引用地址:http://www.104case.com/article/172814.htm


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

        看門狗定時(shí)器的預(yù)置時(shí)間是通過X25045的狀態(tài)寄存器的相應(yīng)位來設(shè)定的。如表2所示,X25045狀態(tài)寄存器共有6位有含義,其中WD1、WD0和看門狗電路有關(guān),其余位和EEPROM的工作設(shè)置有關(guān)。


        表2 X25045狀態(tài)寄存器

        WD1=0,WD0=0,預(yù)置時(shí)間為1.4s。
        WD1=0,WD0=1,預(yù)置時(shí)間為0.6s。
        WD1=1,WD0=0,預(yù)置時(shí)間為0.2s。
        WD1=1,WD0=1,禁止看門狗工作。

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

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

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

        需要注意的是,在程序正常運(yùn)行的時(shí)候,應(yīng)該在適當(dāng)?shù)牡胤郊右粭l喂狗指令,使系統(tǒng)正常運(yùn)行時(shí)的定時(shí)時(shí)間達(dá)不到預(yù)置時(shí)間。系統(tǒng)就不會復(fù)位。喂狗指令如下。

        main()
        {
        ...;系統(tǒng)正常運(yùn)行的程序部分
        {
        cs=0; /*產(chǎn)生cs脈沖*/
        cs=1;
        }
        }

        X25045的看門狗電路使用十分方便。X25045內(nèi)部還集成了512BEEPROM和電壓運(yùn)行監(jiān)視系統(tǒng),只需這樣一塊芯片,外加晶振和復(fù)位電路就可以組成的應(yīng)用系統(tǒng),非常適合于便攜式儀器和嵌入式系統(tǒng)的設(shè)計(jì)。

        DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY




        關(guān)鍵詞: 電路 看門 單片機(jī)

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 防城港市| 土默特左旗| 庆城县| 濮阳市| 塔城市| 萨迦县| 临朐县| 聂荣县| 山西省| 郑州市| 望谟县| 义乌市| 郓城县| 大方县| 盐源县| 天祝| 巨鹿县| 正镶白旗| 金湖县| 扬州市| 仙居县| 张家港市| 松阳县| 磐石市| 北川| 双柏县| 团风县| 九台市| 贡觉县| 呼玛县| 永嘉县| 龙陵县| 温州市| 德阳市| 正定县| 辽阳县| 岑巩县| 福海县| 延庆县| 江西省| 醴陵市|