PIC16F877A 看门狗定时器实验

//*******************PIC16F877A 看门狗定时器实验*******************
//
//PORTA,PORTB,PORTC,PORTD,PORTE复位时为输入状态
//PORTA.4(RA4)为开漏输出
//
//WDT运行于独立的内部RC振荡器,即使器件时钟停振,WDT仍正常工作
//PIC16F877A单片机的WDT只能在烧写芯片时通过配置位启动或停止
//WDT基本溢出时间为18ms,由于温度影响,该值在7-33ms之间变化
//WDT和TMR0共用一个预分频器
//PSA=1;           //预分频器分配给WDT使用
//PS2  PS1  PS0     WDT
// 0    0    0     1  分频
// 0    0    1     2  分频
// 0    1    0     4  分频
// 0    1    1     8  分频
// 1    0    0     16 分频
// 1    0    1     32 分频
// 1    1    0     64 分频
// 1    1    1     128分频
//
//mcu: PIC16F877A  12MHz 
//2010年7月11日8:03:01
//****************************************************************

#include <lian_pic.h>
__CONFIG(HS&WDTEN&LVPDIS&PWRTEN);   
//HS振荡,打开看门狗,低压编程关闭,启动延时定时器

//********************函数定义*********************
void delay1ms(uint DelayTime);

//*************** 主程序 ********************
void main(void)
{   
    PSA=1;           //预分频器分配给WDT使用
    PS2=1;
    PS1=1;
    PS0=1;           //预分频器128分频
  TRISC=0x00;      //PORTC口设置为输出
  PORTC=0x00;
  CLRWDT();        //清看门狗

  while(1)        
  {
    PORTC++;
    delay1ms(200);
  }
}   

//***************延时 n*1ms 12MHz***************
void delay1ms(uint DelayTime)
{    uint temp;
    for(;DelayTime>0;DelayTime--)
    {    for(temp=0;temp<270;temp++)
        {;}
    }
}

 

 

//*******************PIC16F877A 看门狗定时器实验*******************
//
//PORTA,PORTB,PORTC,PORTD,PORTE复位时为输入状态
//PORTA.4(RA4)为开漏输出
//
//WDT运行于独立的内部RC振荡器,即使器件时钟停振,WDT仍正常工作
//PIC16F877A单片机的WDT只能在烧写芯片时通过配置位启动或停止
//WDT基本溢出时间为18ms,由于温度影响,该值在7-33ms之间变化
//WDT和TMR0共用一个预分频器
//PSA=1;           //预分频器分配给WDT使用
//PS2  PS1  PS0     WDT
// 0    0    0     1  分频
// 0    0    1     2  分频
// 0    1    0     4  分频
// 0    1    1     8  分频
// 1    0    0     16 分频
// 1    0    1     32 分频
// 1    1    0     64 分频
// 1    1    1     128分频
//
//mcu: PIC16F877A  12MHz  
//2010年7月11日8:03:01
//****************************************************************

#include <lian_pic.h>
__CONFIG(HS&WDTEN&LVPDIS&PWRTEN);	
//HS振荡,打开看门狗,低压编程关闭,启动延时定时器
                

//********************函数定义*********************
void delay1ms(uint DelayTime);


//*************** 主程序 ********************
void main(void)
{	
	PSA=1;           //预分频器分配给WDT使用
	PS2=1;
	PS1=1;
	PS0=1;           //预分频器128分频
	
  TRISC=0x00;      //PORTC口设置为输出
  PORTC=0x00; 
  
  CLRWDT();        //清看门狗

  while(1)         
  {
    PORTC++;
    delay1ms(200);
  } 
}	

//***************延时 n*1ms 12MHz***************
void delay1ms(uint DelayTime)
{	uint temp;
    for(;DelayTime>0;DelayTime--)
	{	for(temp=0;temp<270;temp++)
		{;}
	}
}
posted @ 2010-12-29 00:10  hnrainll  阅读(1457)  评论(0编辑  收藏  举报