pic12f675 таймер1 наблюдение - PullRequest
0 голосов
/ 10 мая 2018

Я использовал TIMER1 в PIC12F675 с прерыванием по переполнению и временем для переполнения около 0,5 с, а при моделировании это правда

код прерывания переполнения ФУНКЦИЯ:

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 секунд что это значит?

1 Ответ

0 голосов
/ 15 мая 2018

вы сказали около 0,5 секунды, что означает, что это не совсем 1/2 секунды.Вы проверяете> 10, что означает, что он должен считать до 11. Так что при 0,5 секундах у вас есть задержка 5,5 секунды, но, опять же, я уверен, что это что-то вроде 0,525 секунды.

...