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 ;
		
	}
}


posted on 2013-08-22 17:54  bbsno  阅读(643)  评论(0编辑  收藏  举报

导航