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