PIC16F690 TMR1初始化设置及应用

//timer1 分频值

#define		TIMER1_DIV1		(0<<4)

#define		TIMER1_DIV2		(1<<4)

#define		TIMER1_DIV4		(2<<4)

#define		TIMER1_DIV8		(3<<4)

//-----时钟源选择------------

#define		T1_FOSC			(1<<1)	

#define		T1_FOSC_4		(0<<1)



//---------------

#define	TIMER1_IEN_ENB 	TMR1IE = 1 	//使能T1中断

#define	TIMER1_IEN_DIS 	TMR1IE = 0  //禁止T1中断



//----定时器使能---------

#define	TIMER1_CNT_ENB 	TMR1ON = 1 	//使能T1计数

#define	TIMER1_CNT_DIS 	TMR1ON = 0  //禁止T1计数









//*************************************

// 函数名称:Init_Timer1

// 函数功能:定时器0初始化

// 入口参数:定时器分频值 计数值

// 出口参数:无

// T1的时钟源为Fosc/4

//***************************************

void Init_Timer1(uint8 pscr)

{

	TMR1IF = 0 ;

	TMR1IE = 0 ;

	T1CON = T1_FOSC_4 | 0X01 | pscr; //开启定时器1



	TMR1IE = 0 ;

} 





//---实例应用-------



void main(void)

{

	//初始化定时器1 计时频率为1M

	Init_Timer1(TIMER1_DIV2) ;//8/4/2=1M OK

	TIMER1_IEN_ENB ;



	while(1)

	{

		while(!F_10MS); //10MS跑一次主程序

		F_10MS = 0 ;



		.

		.

		.

	}

}



//---中断服务程序------

void interrupt server(void) 

{

	if(TMR1IF && TMR1IE) //定时器1中断

	{

		TMR1IF = 0 ;



		TMR1H = (65536-10000)/256 ; //计时10MS

		TMR1L = (65536-10000)%256 ;



		F_10MS = 1 ;

		

	}

}


你可能感兴趣的:(初始化)