Witam, chciałem stworzyć, zegar na atmega16, z wykorzystaniem LCD. Procesor podpięty pod kwarc 16 MHz, do odliczania czasu wykorzystuję Timer0, biblioteki do lcd za strony radzio.dxp.pl. Zegar działa ale patrząc na kod wydaje mi się że coś by się tu przydało zoptymalizować.
poniżej fragment kodu odpowiadający za wyświetlanie, warunków typu if(sec<10 & min<10) wyszło by mi 8, jeśli ich nie stosuje, w momencie przejścia sekund z 9 na 10 na wyświetlaczu się mi wszystko rozjeżdża. Proszę o jakąś wskazówkę jak to poprawić;), w razie jakichś niejasności kodu, proszę pytać;)
Kod:
ISR(TIMER0_OVF_vect)
{
LCD_GoTo(4,0);
TCNT0=6;
msec++;
if(min==60)
{
min=0;
sec=0;
msec=0;
god++;
}
if(sec==60)
{
sec=0;
msec=0;
min++;
}
if(msec==1000)
{
msec=0;
if(sec<10 & min<10)
{
sprintf(bufor, "0%d:0%d:0%d",god,min,sec);
LCD_WriteText(bufor);
}
else if(sec<10 & min>=10)
{
sprintf(bufor, "0%d:%d:0%d",god,min,sec);
LCD_WriteText(bufor);
}
else if(sec>=10 & min<10)
{
sprintf(bufor, "0%d:0%d:%d",god,min,sec);
LCD_WriteText(bufor);
}
else
{
sprintf(bufor, "0%d:%d:%d",god,min,sec);
LCD_WriteText(bufor);
}
sec++;
}
}