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条回答
troy
2019-03-26 02:15
楼主看看我的代码吧。

  1. /TMR0初始化子程序
  2. void                tmint()
  3. {
  4.         T0CS=0;                                //TMR0工作于定时器方式
  5.         PSA=1;                                        //TMR0不用分频
  6.         T0IF=0;                                        //清除TMR0的中断标志
  7.         T0IE=1;                                        //TMR0中断允许
  8. }
复制代码
  1. //中断服务程序
  2. void                interrupt        clkint(void)
  3. {
  4.         TMR0=0X13;                        //对TMR0写入一个调整值。因为写入TMR0后接着的
  5.         //两个周期不能增量,中断需要3个周期的响应时间,
  6.         //以及C语言自动进行现场保护要消耗周期
  7.         T0IF=0;                                        //清除中断标志
  8.         CLRWDT();
  9.         sreg=sreg+1;                                //中断计数器加1
  10.         if(sreg==40)                                //中断次数为40后,才对S0,S1,S2,S3 操作
  11.         {
  12.                 sreg=0;
  13.                 s0=s0+1;
  14.                 if(s0==10){
  15.                         s0=0        ;
  16.                         s1=s1+1;
  17.                         if(s1==10){
  18.                                 s1=0        ;
  19.                                 s2=s2+1;
  20.                                 if(s2==10){
  21.                                         s2=0;
  22.                                         s3=s3+1;
  23.                                         if(s3==10)        s3=0        ;
  24.                                 }
  25.                         }
  26.                 }
  27.         }
  28.         s[0]=s0;
  29.         s[1]=s1;
  30.         s[2]=s2;
  31.         s[3]=s3;
  32. }
复制代码

一周热门 更多>