Skocz do zawartości

Wyświetlenie czasu na 7 segmentowych wyświetlaczach z przerwaniami Timera


Pomocna odpowiedź

Napisano

Witam, piszę program zegara na dwa wyświetlacze 7 segmentowe LED, ustawiłem już multipleksowanie i wszystko działa. Nie wiem tylko jak zrobić odliczanie podczas multipleksowania, tak wygląda mój kod:

void __ISR(_TIMER_1_VECTOR,IPL7SRS) TimerInterrupt(void)
{
   if(i==0)
   {
       LATDbits.LATD8=0;
       LATDbits.LATD9=1;

       LEDset(j);
       j++;
       if(j==9)
           j=0;
       IFS0bits.T1IF=0;

   }
   if(i==1)
   {
       LATDbits.LATD8=1;
       LATDbits.LATD9=0;
       LEDset(2);
       IFS0bits.T1IF=0;
   }
   i=!i;
}

To jest obsługa przerwania Timera aby zrobić multipleksowanie.

Teraz żeby zliczasz sekundy mam użyć drugiego Timera czy jest jakiś inny sposób ??

A jak często się to twoje przerwanie uruchamia? Jeśli n-razy na sekundę, to po prostu możesz tam mieć licznik, który następnie będziesz dzielić przez n i dostaniesz liczbę sekund.

Multipleksowanie jest ustawione na 10ms, czyli żeby w obsłudze przerwania zrobić licznik, który będzie co 1 s coś wykonywał ? Mogę w takim przypadku cały kod mieć napisany w obsłudze przerwania ?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...