【问题标题】:pic12f675 timer1 observationpic12f675 timer1 观察
【发布时间】:2018-05-10 10:00:43
【问题描述】:

我在 PIC12F675 中使用了带有溢出中断的 TIMER1,溢出时间约为 0.5 秒,在模拟中它是真的

溢出中断FUNCTION代码:

void interrupt int_tmr1(void) {
if((PIE1&(1<<0))&&(PIR1&(1<<0))) //TMR1 OVERFLOW CONDITION 
{
         GPIO^=(1<<0); //TOGGLE LED 
       PIR1&=~(1<<0); //CLEAR TMR1 INTERRUPT OVER FLOW FLAG
}

}

但如果我想通过编辑这样的中断函数来增加持续时间:

void interrupt int_tmr1(void)
   {
      if((PIE1&(1<<0))&&(PIR1&(1<<0))) //TMR1 OVERFLOW CONDITION
      {
         static unsigned char count=0;
          if(count>10)
         {
          GPIO^=(1<<0); //TOGGLE LED 
           count=0;
          }

    else
    {

   count++;

     }

    PIR1&=~(1<<0); //CLEAR TMR1 INTERRUPT OVER FLOW FLAG
     }

 }

所需时间为 5 秒,但在模拟中为 6 秒 这是什么意思?

【问题讨论】:

  • 不清楚你的问题是什么或你的问题是什么。因此,您添加了一个计数器,该计数器需要 10 次中断才能触发 LED 切换。什么事情没有按照你想要的方式发生?什么是 5 秒与 6 秒?你的定时器设置代码在哪里?等等。

标签: embedded pic mplab


【解决方案1】:

您说大约 0.5 秒,这意味着它不完全是 1/2 秒。您正在检查 >10,这意味着它必须数到 11。所以在 0.5 秒时,您有 5.5 秒的延迟,但我再次确定它类似于 0.525 秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2014-03-24
    • 2011-06-09
    相关资源
    最近更新 更多