89S51的看門狗用法2008-03-31 12:19
起作用的時候是不是隻要同時寫O1EH和OE1H到特殊暫存器OA6H中就可以了呢?
這是89S51的看門狗用法,S52應該是一樣的
看門狗具體使用方法如下:
在程式初始化中向看門狗暫存器(WDTRST地址是0A6H)中先寫入01EH,再寫入0E1H。即可激
活看門狗。
Org 0000
Ljmp begin
Begin:
Mov 0A6H,#01EH ;先送1E
Mov 0A6H,#0E1H ;後送E1
;在程式初始化中啟用看門狗。
……
For:
;餵狗指令
Ljmp for
在C語言中要增加一個宣告語句。
在AT89X51.h宣告檔案中增加一行 sfr WDTRST = 0xA6;
Main()
{
WDTRST=0x1E;
WDTRST=0xE1;//初始化看門狗。
While (1)
WDTRST=0xE1;//餵狗指令
}
注意事項:
1. 89S51的看門狗必須由程式啟用後才開始工作。所以必須保證CPU有可靠的上電覆位。否則看門狗也無法工作。
2. 看門狗使用的是CPU的晶振。在晶振停振的時候看門狗也無效。
3. 89S51只有14位計數器。在16383個機器週期內必須至少餵狗一次。而且這個時間是固定的,無法更改。
當晶振為12M時每16個毫秒需餵狗一次。
以上程式已除錯透過。
89S51的看門狗用法2008-03-31 12:19
起作用的時候是不是隻要同時寫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個毫秒需餵狗一次。
以上程式已除錯透過。