Timer0 模块是 8 位定时器 / 计数器,具有以下特性:
• 8 位定时器 / 计数器寄存器 (TMR0)
• 8 位预分频器 (与看门狗定时器共用)
• 可编程内部或外部时钟源
• 可编程外部时钟边沿选择
• 溢出时产生中断
/*************************************************************
@beep_;
TIMER0定时器初始化:void timer0_init(void);
相关寄存器:
TMR0:TIMER0模块寄存器
INTCON:中断寄存器
bit7:GIE 全局中断使能/禁止
bit5:T0IE TiMER0溢出中断使能/禁止
bit2:T0IF TiMER0溢出中断标志必须用软件清除
OPTION_REG:
T0CS:时钟源选择
1:GP2引脚电平跳变
0:FOSC/4
T0SE:GP2时钟源边沿选择
PSA:预分频器分配
1:分给WDT
0:分给TIMER0模块
PS<2:0>预分频比选择位
value TIMER0 WDT
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1:16 1:8
...
2ms/tick:
系统时钟:FOSC=4MHZ
TIMER0时间:1us,TIR0延时2us,8分频.溢出中断.
tick=(0Xff-0X08)*8=2000us.
*************************************************************/
void timer0_init(void)
{
GIE=0; //关闭全局中断
OPTION_REGbits.T0CS=0;
OPTION_REGbits.PSA=0;
OPTION_REGbits.PS=0x02;
TMR0=C_Timer0;//C_Timer0=0x08;
T0IF=0; //TiMER0溢出中断标志必须用软件清除
T0IE=1; //TiMER0溢出中断使能
GIE=1; //打开全局中断
}