浅析PIC单片机定时器
OPTION_REG寄存器中我们一般需要设置三处。
PS2:0>设置用来设置预分频预分频范围从2 ~256
PSA设置成0 讲预分频器分配给Timer0模块
TMR0CS设置成0 内部指令周期时钟。

实例程序:
/*开发环境 MPLAB X IDE 型号PIC16LF1823*/
#include
__CONFIG(FOSC_INTOSCWDTE_OFFPWRTE_ONMCLRE_
OFFCP_ONCPD_OFFBOREN_ONCLKOUTEN_OFFIESO_ONFCMEN_ON);
__CONFIG(PLLEN_OFFLVP_OFF) ;
#define LED LATA5/*也可用 #define LED RA5,只是PIC16LF1823 输出电平的时候,直接控制LATA5执行速度更快,因为传给RA5的数据最终也是传给LATA5才执行的*/
void init_fosc(void)
{
OSCCON= 0x68;//时钟设置为4MHz
}
void init_gpio(void)
{
PORTA = 0;
LATA = 0;
ANSELA = 0;
TRISAbits.TRISA5=0; //RA5口设置成输出 用来控制LED
}
void init_timer0(void)
{
OPTION_REG=0x87; //预分频为256
}
int main(int argc, char** argv)
{
init_fosc();
init_gpio();
init_timer0();
TMR0IF=0;//清除TMR0中断标志位
TMR0=61;//设置中断初始值61
while(1)
{
if(TMR0IF==1)//定时时间到了吗??
{
LED = ~LED;//改变LED的状态
TMR0IF=0;//清除TMR0中断标志位
TMR0=61;//设置中断初始值61为下次50ms定时做准备
}
}
}
分频器相关文章:分频器原理
评论