×
单片机 > 单片机程序设计 > 详情

PIC16F877A 看门狗定时器(WDT)

发布时间:2020-05-16 发布时间:
|

//PIC.H中定义了宏   #define CLRWDT()  asm("clrwdt")因此在PICC的c语言中可以直接使用CLRWDT()对WDT清0
//若单片机WDT使能,在适当位置加入CLRWDT(),程序进入正常运行时,每隔一定时间均会执行CLRWDT()语句对WDT清0,芯片不会复位
//如果程序陷入死循环,不会执行到CLRWDT()语句,则超出所设定的时间后,WDT溢出使芯片复位,从头(000H)开始执行,单片机恢复正常运行
//PIC16F单片机,看门狗定时器的启用只能在芯片的烧写时确定,即无法用软件来开启或关闭WDT,但在PIC16f88X中可以。
//PIC16单片机的WDT基本溢出时间为18MS,由RC充放电时间确定,在-40~85度之间变化时,WDT基本溢出时间在7-33ms变化
#include
__CONFIG(0X3F3D);//开启WTD
void DELAY(unsigned int);
#define LED1 RB1
main(void)
{
TRISB=0B11111101;
OPTION=0B11111011;  //WDT的分频比为1:8,最大复位时间为18*8=144ms
if(TO==0)// 若写成T0,则编译出错。。。
{
  LED1=1;  //看门狗定时器溢出,仿真时溢出TO不会清零
}
else
  LED1=0;
while(1)
{
  DELAY(100);//模拟一个运行100ms的子程序
  CLRWDT();
  DELAY(200);//模拟一个运行200ms的子程序,此时会产生溢出(200ms>144ms)
  CLRWDT();
};
}
void DELAY(unsigned int n)
{
unsigned int j;
char k;
for(j=0;j  for(k=246;k>0;k--)
NOP();
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析