89S51內(nèi)部看門狗功能的使用方法
看門狗具體使用方法如下:
本文引用地址:http://m.butianyuan.cn/article/201611/317361.htm在程序初始化中向看門狗寄存器(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語言中要增加一個(gè)聲明語句。
在AT89X51.h聲明文件中增加一行 sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E;
WDTRST=0xE1;//初始化看門狗。
While (1)
{
WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
}
}
注意事項(xiàng):
1. 89S51的看門狗必須由程序激活后才開始工作。所以必須保證CPU有可*的上電復(fù)位。否則看門狗也無法工作。
2. 看門狗使用的是CPU的晶振。在晶振停振的時(shí)候看門狗也無效。
3. 89S51只有14位計(jì)數(shù)器。在16382個(gè)機(jī)器周期內(nèi)必須至少喂狗一次。而且這個(gè)時(shí)間是固定的,無法更改。當(dāng)晶振為12M時(shí)每16個(gè)毫秒需喂狗一次。
89S52只有13位計(jì)數(shù)器。在8191個(gè)機(jī)器周期內(nèi)必須至少喂狗一次。而且這個(gè)時(shí)間是固定的,無法更改。當(dāng)晶振為12M時(shí)每8個(gè)毫秒需喂狗一次。
以上程序我已調(diào)試通過。還利用定時(shí)器把看門狗的喂狗時(shí)間延長(zhǎng)幾秒至幾分鐘。
評(píng)論