天天看點

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++)
		{;}
	}
}