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 ;
}
}
浙公网安备 33010602011771号