pic定时器0的初始值

2019-03-25 19:47发布

  1. void init_tmr0()
  2. {
  3.      T0CS=0;             //TMR0工作于定时器方式
  4.      T0IE=1;//Timer0中断允许
  5.      GIE=1;
  6.      TMR0=0xFF;
  7.      T0IF=0;                 //清除TMR0的中断标志
  8. }
  9. void interrupt compare()
  10. {
  11.      if(T0IF && T0IE)
  12.      {
  13.          TMR0=0xFF;            //对TMR0写入一个调整值。因为写入TMR0后接着的
  14.                              //两个周期不能增量,中断需要3个周期的响应时间,
  15.                              //以及C语言自动进行现场保护要消耗周期
  16.          T0IF=0;             //清除中断标志
  17.          if(++ms==25)
  18.          {
  19.              ms=0;
  20.              if(++s==1000)
  21.              {
  22.                  s=0;
  23.                  RB3=!RB3;
  24.              }
  25.          }                     
  26.     }
  27. }
复制代码
为什么我改变TMR0的值,定时中断并没有改变呢?这个计算公式是什么 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
罗马后裔
2019-03-26 04:00
感觉你的中断初始化程序有点问题。

一般是先
T0IF=0;  //清除TMR0的中断标志
然后在
T0IE=1;                    //TMR0中断允许

另外你的 PSA=1;                    //TMR0不用分频
也没有。

一周热门 更多>