//------------------------------------------------------------------
//TMR0初始化子程序
void init_tmr0()
{
TMR0=0xFF;
T0CS=0; //TMR0工作于定时器方式
T0IE=1;//Timer0中断允许
GIE=1;
T0IF=0; //清除TMR0的中断标志
}
//------------------------------------------------------------------
//中断入口函数
void interrupt compare()
{
//定时器中断
if(T0IF && T0IE)
{
TMR0=0xFF; //对TMR0写入一个调整值。因为写入TMR0后接着的
//两个周期不能增量,中断需要3个周期的响应时间,
//以及C语言自动进行现场保护要消耗周期
T0IF=0; //清除中断标志
if(++ms==25)
{
ms=0;
if(++s==1000)
{
s=0;
RB3=!RB3;
}
}
}
}
RB3是连接的LED,为什么出来的时间不准确? |