STC89系列单片机看门狗的使用及应用程序
- 格式:docx
- 大小:17.96 KB
- 文档页数:10
STC89C58RD+22.1184MHz晶振+外中断0+红外遥控解码+定时器0+定时器1+定时器2+串口+看门狗本程序通过外中断0与定时器0实现红外遥控解码,并通115200波特率的串口将红外遥控的地址码和数据码发送到PC机上的串口助手,同时使用定时器1进行喂狗,防止程序出现异常。
本程序适用于STC系列的单片,ATMEL的单片机基本通用,就是在设置看门狗和定时器2时需要参考ATMEL单片机的手册才行。
//以下程序适用于STC89C58RD+ ,使用22.1184MHz晶振,用1838来对红外遥控器解码,1838的1脚接外中断0脚,即单片机P3.2脚//红外遥控器发出的红外信号经过1838处理后输出的是9.5ms低电平(也可能是4.5ms低电平)加4.5ms高电平的前导码,后面8位的地址码,8位的地址反码(也可能是地址码),8位的数据码,8位的数据反码,总共32位码//其中0码由O.56ms低电平和0.56ms高电平组合而成.脉冲宽度为1.12ms;1码由0.56ms低电平和1.69ms高电平组合而成,脉冲宽度为2.25ms//特别说明:当使用定时器1作为波特率发生器,而定时器2作为16位自动装载的定时器时,定时器2无法正常工作,必须是定时器2作为波特率发生器,定时器1作为定时器用#include<reg52.h>#include<stdio.h>//#include<string.h>unsigned char count;unsigned int Address_Part,Data_Part;unsigned char date;bit Rev_flag;bit Over_flag;sfr WDT_CONTR=0xe1;//STC的看门狗寄存器的地址,ATMEL的芯片看门狗地址不一样sfr T2MOD=0xc9;//定时器2的模式选择寄存器地址//unsigned int time_data[35];//unsigned char time_count;#define WDT_Time 22unsigned char Count_Num=0;void delay(unsigned int z)//延时函数,在22.1184M晶振下没有调试过,只是大概的使用,大概是1个毫秒{unsigned int x,y;for(x=z;x>0;x--)for(y=200;y>0;y--);}void init_config()//初始化函数{// PCON |=0x80;//SMOD=1,定时器1要产生115200波特率必须置位,定时器2则不需要REN=1;//启动串行接收数据SM0=0;SM1=1;//SM0,SM1设置串行口为工作方式1,10位异步收发器-->1位起始位,8位数据,1位停止位TI=1;//要使用printf()函数,就需要置位,后期不能置0T2MOD=0x00;//选择定时器2为向上定时计数器T2CON=0x34;//选择定时器2为16位自动重新装载模式下的波特率发生器,启动定时器2RCAP2H=0xff;//65536-(fosc/(32*baud));//22.1184MHz产生115200波特率,算法和用定时器1做波特率发生器的算法不一样RCAP2L=0xfa;//TMOD=0x11;//设置定时器0为工作方式1,定时器1为方式1TH1=(65536-65000)/256;//定时器初值,大概是35ms进一次定时器中断TL1=(65536-65000)%256;//TR1=1;//启动T1定时器TH0=0x00;TL0=0x00;//设置定时器0初值IT0=1;//设置外中断0为下降沿触发ET0=1;//开定时器0允许中断ET1=1;//开定时器1允许中断EX0=1;//开外中断0//TR0=1;ES=1;//开串口中断EA=1;//开总中断Rev_flag=0;Over_flag=0;printf("Initialization is OK!\n\r");WDT_CONTR=0x35;//看门狗启动,计数清零,晶振为22.1184MHz,64分频,溢出时间为1S}void main()init_config();while(1){// WDT_CONTR=0x35;//看门狗启动,计数清零,64分频,溢出时间为1Sif(Over_flag){Over_flag=0;printf("Address_Part:%x,Data_Part:%x\n\r",Address_Part,Data_Part);}if(Rev_flag)//判断串口接受到数据,只是把从串口调试助手发过来的数据发回去,测试收发用而已{ES=0;Rev_flag=0;SBUF=date;//发送数据while(!TI);//发送数据完毕才跳出死循环ES=1;// TI=0;}/* if(Count_Num>WDT_Time)//0.8秒左右喂狗{Count_Num=0;//WDT_CONTR=0x35;//看门狗启动,计数清零,64分频,溢出时间为1Sprintf("T1!\n\r");}*//* if(time_count==40)//把收到的时间th值传给串口打印出来{time_count=0;printf("time:\n\r");for(;time_count<35;time_count++){printf("%d \n\r",time_data[time_count]);}memset(time_data,0,sizeof(time_data));EX0=1;//开外中断0}*/}}void exter() interrupt 0{unsigned int th;unsigned char tl;bit ds;TR0=0;//关定时器0th=TH0;//提取出高8位tl=TL0;//提取出低8位th<<=8;//左移8位th=th|tl;//算出定时器总共的计数值TH0=0x00;//初始值TL0=0x00;/* time_data[time_count]=th;//这段代码的作用是在不知道th的数值是多少为前导码,为0,为1时,把收到的时间th给提取出来,方便传给串口打印出来,要使用这一功能要把下面判断前导码那些代码给屏蔽,并且开启主函数里面的那段代码time_count++;if(time_count==35){time_count=40;EX0=0;}TR0=1;*//*这段判断前导码和0、1的值是12M晶振下的if(th>950&&th<1225)ds=0;//判断0和1else if(th>2050&&th<2345)ds=1;else if(th>13325&&th<13600)//判断前导码*///这段判断前导码和0、1的值是22.1184M晶振下的if(th>1900&&th<2260)ds=0;//判断0和1else if(th>4000&&th<4300)ds=1;else if(th>24900&&th<25350)//判断前导码{Address_Part=0;Data_Part=0;count=0;Over_flag=0;TR0=1;return;}else{TR0=1;return;}//去除干扰,当接收的是准备进前导码时的下降沿和截止码时,该语句起作用,没有该语句,则只能接收一次count++;if(count<16){Address_Part=Address_Part|ds;Address_Part=Address_Part<<1;TR0=1;}else if(count==16){Address_Part=Address_Part|ds;TR0=1;}else if(count<32){Data_Part=Data_Part|ds;Data_Part=Data_Part<<1;TR0=1;}else if(count==32){Data_Part=Data_Part|ds;Over_flag=1;}//接收完32位,后面应该有连续码,但不需要,所以不作处理}void time0() interrupt 1//要是没有该函数,可能会因为溢出而导致解码不正确{TR0=0;}void ser() interrupt 4{if(RI)//一定要加该判断句,不然串口调试助手那里会一直收到数据{RI=0;date=SBUF;//提取数据Rev_flag=1;}}void timer1() interrupt 3{TH1=(65536-65000)/256;//定时器初值;TL1=(65536-65000)%256;//Count_Num++;// printf("T2!\n\r");if(Count_Num>WDT_Time)//0.8秒左右喂狗{Count_Num=0;WDT_CONTR=0x35;//看门狗启动,计数清零,64分频,溢出时间为1S}}。
单片机看门狗的描述下面是关于STC89C5XX-51 单片机看门狗的描述WDT_CONTR 位置0xE1; [-] [-] [EN_WDT] [CLR_WDT] [IDLE_WDT] [PS2] [PS1] [PS0]EN_WDT: 看门狗允许位,置1 启动看门狗,看门狗不能自动启动,需要设置该位后启动,一旦启动不能关闭(只能系统重新上电和看门狗复位可以关闭)CLR_WDT: 看门狗计数器清零位,置1 清零看门狗计数器,当计数器开始重新计数,硬件清零该位。
IDLE_WDT: 单片机IDLE 模式看门狗允许位,当IDLE_WDT=1 时,单片机在IDLE 模式(空闲模式)依然启用看门狗PS2~PS0: 看门狗定时器预分频器,下表中Prescale 表示预分频数PS2 PS1 PS0 Prescale0 0 0 20 0 1 40 1 0 80 1 1 161 0 0 321 0 1 641 1 0 1281 1 1256看门狗溢出时间:(N*Prescale*32768)/晶振频率,其中N 表示指令周期数N=12 表示12 时钟周期模式;N=6 表示6 时钟周期模式。
如N=12,晶振频率为12MHz,PS2~PS0 为100 时,溢出时间=(12*32*32768)/12=1048576us,差不多是1s。
例如:给WDT_CONTR 写入0 乘以34,即是激活看门狗,同时预分频数设为32。
喂狗过程也是一样的。
顺便说一下ATMEL-51 单片机的看门狗下面是关于ATMEL-51 单片机看门狗的描述【看门狗计数器】(watchdog timer)是一个14 位的计数器,它以机器周期(晶振频率/12)增加,当计数值计满(16383/0 乘以3FFF)了就使单片机软复位;当启动了【看门狗计数器】之后,我们需要在它计数没有满之前复位计数器强制。
单片机看门狗(Watchdog)的工作原理及其应用2010年05月16日星期日 23:00在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。
程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。
所以,出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)。
看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行。
这个时候,看门狗电路就会由于得不到单片机送来的信号。
便在它和单片机复位引脚相连的引脚上送出一个复位信号。
使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
看门狗,又叫 watchdog timer,是一个定时器电路。
一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU 正常工作的时候,每隔一端时间输出一个信号到喂狗端,给 WDT 清零。
如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,是MCU复位,防止MCU死机。
看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
所以,在使用有看门狗的芯片时要注意清看门狗。
stc单片机看门狗程序的运用STC单片机是一款增强型51单片机,彻底兼容MCS-51,还添加了新的功用,比方新增两级接连优先级,多一个外接连,内置EEPROM,硬件看门狗,具有掉电办法,512B内存等。
还支撑ISP下载,不必编程器,只需一个MAX232和一些便宜的元件就能写程序,可擦写10万次。
因而是一款极好用的单片机。
在这儿,简略阐明一下其看门狗的运用。
STC单片机的看门狗一旦主张,就不能接连,其看门狗溢出时刻能够运用STC单片机用户手册核算,其简略举例如下:#include//STC单片机头文件#defineuintunsignedint#defineucharunsignedcharsbitled=P1^0;//===================================================== ============//函数称谓:voiddelay(uintus)//函数功用:延时//进口参数:us延不时刻的长短//出口参数:无//===================================================== ============voiddelay(uintus){while(us--);}main(){WDT_CONTR=0x3c;//主张看门狗led=1;//点亮LEDdelay(100);led=0;delay(100);//停息LEDwhile(1){WDT_CONTR=0x3c;//喂狗,若屏蔽掉该位,则看门狗溢出后复位,LED灯不断闪耀}}这个程序很简略,简略的我都感受欠好意思写这个程序了。
在这儿,权当是介绍STC单片机,说一下STC单片机的看门狗功用,让咱们开端了解这款单片机,这款单片机将是我将来三个月用的首要类型,在这三个月里我将接连用这款单片机写一些程序,做一些小东东。
看门狗应用看门狗:看门狗是单片机的一种超时复位机制。
实际上看门狗是一个硬件的计时器,在到达一定的时间后令单片机复位,即程序从头开始重新运行。
在很多种单片机中都有看门狗,除了STC89系列单片机,还有凌阳等。
看门狗的功能:在工业应用中由于一些意外的原因,如电磁干扰、内部硬件错误等,造成单片机死机或陷入死循环中,这样可能会出现很严重的后果,这就需要一种自我检测复位的功能。
在对看门狗进行设置之后,它便开始计时。
在程序运行的过程中对计时器的值定时清零,这就是通常所说的“喂狗”。
如果程序运行正常,则看门狗由于可以及时得以清零,所以不会出溢出。
但是如果程序停滞或进行死循环,就使得看门狗不能清零(看门狗是硬件实现的,与程序的运行是无关的),从而在到达设定的时间后产生溢出,使单片机复位。
STC89系列单片机看门狗的应用:表2.1 STC89的看门狗定时器特殊功能寄存器如表2.1所示,要使用STC89的看门狗只需对寄存器进行设置即可。
WDT_CONTR中的各位的功能详述如下:EN_WDT:Enable Watch Dog Timer,使能看门狗定时器,允许看门狗工作,1允许,0禁止。
CLR_WDT:Clear Watch Dog Timer,看门狗定时器清零,1清零,随后会硬件置0。
IDLE_WDT:Idle Watch Dog Timer,看门狗定时器在空闲模式时是否计时,1为计时,0为停止。
PS2、PS1、PS0:看门狗定时器的预分频,设置成不同的值,会影响到溢出时间。
如果预分频为1(即1分频)的时候,溢出时间为1s,那么当预分频为2时,溢出时间就是2s。
STC89的预分频如表2.2所示:表2.2 STC89的预分频值综上规律,预分频值P=2^(PS+1)。
那么具体的溢出时间是怎么样算出来的呢?这个溢出时间与所用的晶体震荡器频率是有关的,下面介绍其计算方法。
T_WDT=(N • P• 32768)/F_Osc其中参数意义如下:T_WDT:溢出时间N:单片机的时钟数(所谓时钟数就是外部时钟的频率经过N分频后作为单片机工作的时钟,比如外部时钟频率是12M,如果单片机的时钟数N=12的话,那么单片机内部的工作时钟频率便为1M,STC89系列单片机有两种时钟数模式,6时钟与12时钟,当然不同的单片机可能有不同的时钟数,这在相应的芯片文档中会有所说明,如STC12系列单片机的时钟数为1时钟,即外部时钟频率就是工作频率,我们在这里对STC12单片机不作详述)P:就是上面所提到的看门狗定时器的预分频值。
关于STC系列单片机的WatchDog使用心得WatchDog看门狗程序是一个我们经常会用到的程序。
这里基于自己的理解和查阅相关的资料来对其进行一下说明。
1、为什么要使用看门狗?由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果。
2、看门狗的大体原理(自己理解的)经过使用看门狗后,我说一下我对对看门狗的理解。
看门狗其实就类似一个计数器,启动看门狗后,它就开始自己计数,如果计数到了一个值或时间(这个可以自己设定)它就会溢出,溢出同时它就会给系统一个复位信号,这时系统程序就会从头开始运行。
为了不让看门狗的值溢出,我们需要在程序运行中喂狗(也就是手动把看门狗的计数值清零)确保它不会溢出。
如果你的程序中用了延时函数那请注意一下延时时间的设置不要和看门狗的溢出时间冲突了,这个我就不细说了需要大家动手练习才更容易理解。
最后在补充一句。
其实溢出的同时看门狗的溢出标志位也会置一,如果你设置了看门狗相关的中断,它就会进入中断程序。
(进入中断程序后别忘了手动清除看门狗的溢出标志位)3、看门狗的使用(基于STC15W204S单片机、Keil 5环境、C语言)在这里只给出整个程序的一部分,为了讲解使用。
void main(void){UART1_Init(); //这时串口1的初始化函数EA = 1; //开启总中断SendString("Ready! \r\n"); //通过串口1向计算机发送一个字符串WDT_CONTR = 0x36; //这一句里包含了启动看门狗、清零看门狗、设置其为128分频while(1){/*------------喂狗,也就是清零看门狗计数器------------*/WDT_CONTR = 0x36; //这一句里包含了启动看门狗、清零看门狗、设置其为128分频}}上图为STC官方手册截图通过STC-ISP程序烧写代码,这里要注意红框部分,选择自己的分频数(这里为128)下面开始说明上面代码,很简单。
STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。
即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口(UART),还可用定时器软件实现多个UART13.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14.PDIP封装STC89C52RC单片机的工作模式掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序●空闲模式:典型功耗2mA●正常工作模式:典型功耗4Ma~7mA●掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O 口。
at89S51看门狗at89s51令人兴奋的是她在芯片内集成了看门狗的功能,而且用法很简单,这使得我们不用再为了提高系统的稳定性再外加一块电路了,下面介绍看门狗功能的具体使用方法在程序初始化中向看门狗寄存器(WDTRST地址是0A6H)中先写入01EH,再写入0E1H。
即可激活看门狗。
ORG 0000HLJMP beginBegin:MOV 0A6H,#01EH ;先送1EMOV 0A6H,#0E1H ;后送E1;在程序初始化中激活看门狗。
…………For:……MOV 0A6H,#01EH ;先送1EMOV 0A6H,#0E1H ;后送E1;喂狗指令……LJMP For在C语言中要增加一个声明语句。
在AT89X51.h声明文件中增加一行sfr WDTRST = 0xA6;Main(){WDTRST=0x1E;WDTRST=0xE1;//初始化看门狗。
While (1){WDTRST=0x1E;WDTRST=0xE1;//喂狗指令}}其他参考代码:AJMP MAIN ;汇编MAIN:;启动看门狗Mov 0A6H,#01EH ;先送1EMov 0A6H,#0E1H ;后送E1;主程序START:ACALL WDT ;调用复位看门狗子程序AJMP START;主程序;复位看门狗子程序WDT:Mov 0A6H,#01EH ;先送1EMov 0A6H,#0E1H ;后送E1RETEND注意事项:1.89S51的看门狗必须由程序激活后才开始工作。
所以必须保证CPU有可靠的上电复位。
否则看门狗也无法工作。
2.看门狗使用的是CPU的晶振。
在晶振停振的时候看门狗也无效。
3.89S51只有14位计数器。
在16383个机器周期内必须至少喂狗一次。
而且这个时间是固定的,无法更改。
当晶振为12M时每16个毫秒需喂狗一次。
还可利用定时器把看门狗的喂狗时间延长几秒至几分钟。
利用单片机内部定时器实现软件看门狗利用单片机内部定时器实现软件看门狗勤镐工控(05/09/04)软件看门狗(WATCH DOG)也叫做程序运行监视系统。
当程序运行受到干扰,程序飞到一个临时构成的死循环中时,系统将完全瘫痪,软件陷阱也无能为力了,这时就需要人工复位或硬件复位;如果没有人工操作和硬件复位系统,我们采用软件看门狗技术同样也能使系统复位,恢复正常。
这种程序监视系统就好比主人家养了一条狗,主人总要定时喂狗,如果主人忘了喂狗(程序受到干扰,跑飞掉了),狗就会大叫起来,提醒主人(程序重新运行)。
软件看门狗的特性如下:1、本身独立工作,基本上不依赖CPU;2、CPU在一个固定的时间间隔内和系统打一次交道(喂一次狗),以表明系统目前工作正常。
3、当CPU陷入死循环后,能及时发觉并使系统复位。
当系统陷入死循环后,怎样才能从死循环中跳出来呢?只有比这个死循环更高级的中断程序才能夺走CPU的控制权。
为此,可以用一个定时器来做软件看门狗,因为定时器在运行时不占用CPU资源,它是独立工作的,所以,将它的溢出中断设定为最高优先级中断,系统的其它中断均设为比它低级的中断优先级。
然后根据看门狗的定时时间来设定定时器初值。
软件看门狗启动后,系统工作程序必须经常“喂它”,且每两次之间的间隔不得大于定时器的定时时间。
程序中只要设立一个设置定时器初值的子程序,喂它时只要调用这个子程序即可。
当程序陷入死循环后,定时器溢出,产生高优先级中断,从而跳出死循环。
我们还可以在定时器中断服务程序中放置一条LJMP ERR 指令,即可使程序转向出错处理程序;由出错程序来完成以后的工作,并用软件的方法使系统复位。
以下是一个用定时/计数器T0作软件看门狗的完整程序:ORG 0000HAJMP MAINORG 000BHLJMP ERR MAIN :MOV SP , #60HMOV PSW , #00HMOV SCON , #00HMOV TMOD , #01H ;设置T0为16位定时器SETB ET0 ;允许T0中断SETB PT0 ;设置T0中断为高级中断MOV TL0, #00H ;设定T0的定时初值,定时时间约为16ms(6M 晶振)MOV TH0, #0B0HSETB EA ;开中断SETB TR0 ;启动T0 LOOP:...... ;主程序开始LCALL WATCH DOG ;调用喂狗子程序......LJMP LOOP WATCHDOG:MOV TL0, #00H ;喂狗子程序MOV TH0, #0B0HSETB TR0RET ERR:POP ACC ;定时器中断POP ACC ;看门狗软件复位程序CLR APUSH ACCPUSH ACC RETI在程序中,由于执行了中断服务程序后,PC 的指针已经指向0000H ,从而实现了软件复位的目的。
目录第一章查看工控机是否已安装看门狗 (1)第二章安装看门狗程序步骤 (2)第三章看门狗具体事项设置 (5)第四章查看看门狗运行状况 (8)第一章查看工控机是否已安装看门狗步骤如下:在开始菜单中打开控制面板,查看是否有一个WatchServiceConfiguration程序,如下图所示:如果有的话就直接按照第三章进行设置即可,否则,按照第二章进行安装,安装完以后再按照第三章进行设置。
第二章安装看门狗程序步骤第一步:打开看门狗程序,界面显示如下图所示:第二步:点击Next按钮后,选中第三项Adwantech[w83627HF]WDT,然后点击下一步,界面显示如下图所示:第三步:点击Install进行安装,界面显示如下图所示:程序自行安装完成以后,点击Finish完成。
如下图所示:第四步:安装完成以后会提示重启系统,选中Yes,I want to restart my computer now,点击OK按钮重启即可安装完毕,系统重启以后再根据第三章设置看门狗的事项。
第三章看门狗具体事项设置具体设置步骤如下所示:第一步:在控制面板中找到已安装好的WatchServiceConfiguration程序,打开此程序后,在General窗口中显示如下图所示:提示:如果在安装过程中,General窗口并没有Start watchdogservice on boot复选框和StartService按钮的话,就直接跳到第三步进行设置,如下图所示:第二步:在Start watchdogservice on boot复选框中打上对勾,然后点击Start Service后,该窗口显示如下图所示:第三步:点击Setting窗口,该窗口显示如下图所示:第四步:在Setting窗口中,Timer Span设置问15s,在Watch Mode模式中选中System,并且在Log Event复选框中打上对勾。
如下图所示:第五步:鼠标点击Apply按钮,再点击Enable按钮,最后点击OK按钮即可。
STC89 系列单片机看门狗的使用及应用程序
看门狗概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称看门狗(watch dog)。
加入看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程如下:看门狗芯片和单片机的一个I/O 引脚相连,该I/O 引脚通过单
片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。
通常看门狗电路需要一个专门的看门狗芯片连接单片机来实现,这在我们的单片机教程网51hei 以前做过相关的电路介绍。
不过这样会给电路设计带
来复杂,STC 单片机内部自带有看门狗,通过对相应特殊功能寄存器的设置
就可实现看门狗的应用,STC89 系列单片机内部有一个专门的看门狗定时器
寄存器,Watch Dog Timer 寄存器,其相应功能见下个知识点。