- //------------------------------------------------------------------
- //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,为什么出来的时间不准确?
|