AT89S51單片機(jī)看門狗定時(shí)器的使用
T89S51看門狗定時(shí)器由一個(gè)14位定時(shí)器及WDTRST(地址為6AH)寄存器構(gòu)成。開啟看門狗定時(shí)器后,14位定時(shí)器會(huì)自動(dòng)計(jì)數(shù),每16384(214)個(gè)機(jī)器周期溢出一次,并產(chǎn)生一個(gè)高電平復(fù)位信號(hào),使系統(tǒng)復(fù)位。對(duì)于12MHZ的時(shí)鐘脈沖每16384us(約0.016s)產(chǎn)生一個(gè)復(fù)位信號(hào)。
如果啟動(dòng)看門狗定時(shí)器,當(dāng)系統(tǒng)超過0.016s沒有動(dòng)作(程序跑飛),看門狗定時(shí)器自動(dòng)復(fù)位,讓系統(tǒng)歸復(fù)于正常運(yùn)作狀態(tài)。為了系統(tǒng)既能正常工作又不會(huì)出現(xiàn)死機(jī)(程序跑飛),在0.016s內(nèi)必須喂狗一次,即對(duì)看門狗定時(shí)器進(jìn)行復(fù)位,看門狗的啟動(dòng)和復(fù)位的方法是一樣的。
在匯編語言中啟動(dòng)或復(fù)位看門狗定時(shí)器的命令如下。
MOV 6AH, #1EH
MOV 6AH, #0E1H
若要在C語言中使用看門狗定時(shí)器功能,由于reg51.h中并沒有聲明WDTRST寄存器,所以必須先聲明WDTRST寄存器。
Sfr WDTRST=0xa6;
進(jìn)行聲明以后可以用一下命令啟用或復(fù)位看門狗定時(shí)器。
WDTRST=0x1e;
WDTRST=0xe1;
下面用一個(gè)C語言進(jìn)行說明
#include 《reg51.h》
Sfr WDTRST=0xa6;
Main()
{ ……;
WDTRST=0x1e;
WDTRST=0xe1;
While(1)
{ WDTRST=0x1e;
WDTRST=0xe1;
……;
……; 這部分執(zhí)行時(shí)間必須少于0.016s } }
以上程序中系統(tǒng)在做一個(gè)無限循環(huán)的動(dòng)作,通過看門狗定時(shí)器可以防止程序在執(zhí)行過程中跑飛。因?yàn)橹灰绦蛞慌艹鰓hile()循環(huán),看門狗定時(shí)器溢出以后得不到復(fù)位,所以自動(dòng)復(fù)位系統(tǒng),讓程序從mian()開始重新運(yùn)行。
但是在C語言應(yīng)用看門狗定時(shí)器也特別小心,一定要在看門狗定時(shí)器啟動(dòng)后的0.016s內(nèi)喂一次狗。
注:在匯編語言中每條指令的執(zhí)行時(shí)間都是可以準(zhǔn)確算出來,下面是一個(gè)匯編語言編寫的8路led向左移程序應(yīng)用看門狗定時(shí)器的實(shí)例。
ORG 00H 1 1us
MOV 0A6H,#1EH 2 1us
MOV 0A6H,#0E1H 3 1us
START: MOV A,#0FEH 4 1us
LOOP: MOV P2,A 5 1us
CALL DELAY 6 2us
RL A 7 2us
JMP LOOP 8 2us
DELAY: MOV R7,#200 9 1us
DV: MOV R6,#250 10 1us
DJNZ R6,$ 11 2us
MOV 0A6H,#1EH 2 1us
MOV 0A6H,#0E1H 3 1us
DJNZ R7,DV 12 2us
RET 13 2us
END 14 2us
在程序的每個(gè)行標(biāo)號(hào)后面是12MHZ時(shí)鐘脈沖下的指令執(zhí)行時(shí)間,為了讓系統(tǒng)正常工作且不死機(jī)將看門狗定時(shí)器啟動(dòng)指令放在1和2之間,將看門狗定時(shí)器復(fù)位指令放在11和12之間。
現(xiàn)在一起通過執(zhí)行時(shí)間來計(jì)算看門狗定時(shí)器復(fù)位指令放在那里比較合適。
程序執(zhí)行順序:1 2 3 4 5 6 9 10 11 12 9 10 ……
運(yùn)行時(shí)間: 1us 1 1 1 1 2 1 1 2*250 us (1+250*2+2)*199
程序運(yùn)行到11的時(shí)候用的時(shí)間是2*250+6=506us《16384us
程序運(yùn)行到12的時(shí)候用的時(shí)間是506+(1+250*2+2)*199=10063us》16384us
從比較結(jié)果可以看出,看門狗定時(shí)器的喂狗指令必須放在11和12之間。可以想一下放在12和13之間會(huì)是什么效果。
評(píng)論
查看更多