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

WD1=0,WD0=0,預置時間為(wei) 1.4s。
WD1=0,WD0=1,預置時間為(wei) 0.6s。
WD1=1,WD0=0,預置時間為(wei) 0.2s。
WD1=1,WD0=1,禁止看門狗工作。
看門狗電路的定時時間長短可由具體(ti) 應用程序的循環周期決(jue) 定,通常比係統正常工作時最大循環周期的時間略長即可。編程時,可在軟件的合適地方加一條喂狗指令,使看門狗的定時時間永遠達不到預置時間,係統就不會(hui) 複位而正常工作。當係統跑飛,用軟件陷阱等別的方法無法捕捉回程序時,則看門狗定時時間很快增長到預置時間,迫使係統複位。
以下是C語言編寫(xie) 的看門狗程序部分。
#include reg51.h
sbit cs=P1^2;/*片選信號由P1.2產(chan) 生*/
sbit sck=P1^3; /*時鍾信號由P1.3 產(chan) 生*/
sbit si=P1^0; /*SI由P1.0產(chan) 生*/
sbit so=P1^1; /*SO由P1.1產(chan) 生*/
sbit c=ACC^7; /*定義(yi) 位變量*/
bdata unsigned char com;
void tran() /*發送一字節數據子函數*/
{
unsigned char i;
for(i=0; i<8; i++)
{ ACC=com; /*將數據放入a中*/
si=c;
sck=0; /*sck產(chan) 生一個(ge) 上跳變*/
sck=1;
com=com<<1; /*左移一位*/
}
return;
}
main()
{
com=0x06; /*發寫(xie) 讀使能命令*/
cs=0;
tran();
cs=1;
com=0x01; /*發寫(xie) 狀態字命令*/
cs=0;
tran();
com=0x00; /*定時1.4s*/
tran();
cs=1;
...;係統正常運行的程序部分
}
需要注意的是,在程序正常運行的時候,應該在適當的地方加一條喂狗指令,使係統正常運行時的定時時間達不到預置時間。係統就不會(hui) 複位。喂狗指令如下。
main()
{
...;係統正常運行的程序部分
{
cs=0; /*產(chan) 生cs脈衝(chong) */
cs=1;
}
}
X25045的看門狗電路使用十分方便。X25045內(nei) 部還集成了512BEEPROM和電壓運行監視係統,隻需這樣一塊芯片,外加晶振和複位電路就可以組成單片機的應用係統,非常適合於(yu) 便攜式儀(yi) 器和嵌入式係統的設計。