Ponieważ rozwiązanie już padło, pozwolę sobie tak przy okazji odnieść się do:
Oblako napisał: Cześć wszystkim kupiłem zestaw uruchomieniowym avr z mikrokontrolerem atmega32a.
Za taką cenę to mogłeś kupić np. curiosity nano, które ma wbudowany programator/debugger i pełno różnych sheldów z arduino (w tym z 7seg. LED) do nauki. Miałbyś wygodniej, więcej i lepiej by ci się uczyło mając możliwość prześledzenia co robi program w gotowych układzie.
Przy okazji ten program, który wkleiłeś to twoje dzieło? Kilka uwag:
Zaloguj się, aby zobaczyć kod
Sterowanie wyświetlaczem raczej zrób w przerwaniu timera. Ponadto blokowanie przerwań w przerwaniu jest bez sensu, bo one już są zablokowane. Kolejna sprawa - nigdy nie używaj delay w przerwaniu. W przypadku wyświetlacza LED wszystko możesz zrobić przy pomocy przerwania ovf i comp timera.
Zaloguj się, aby zobaczyć kod
Taki zapis powoduje umieszczenie stałych w pamięci SRAM, czego wolałbyś uniknąć. Dlatego lepiej albo zastosować nowsze AVR, albo użyć _flash. Tak, czy siak, warto też dodać const, bo są to stałe, więc zawsze dodatkowa kontrola przy pomocy const nie zaszkodzi.
Zaloguj się, aby zobaczyć kod
Unikaj takich zapisów o ile nie są niezbędne. W pewnych sytuacjach to może prowadzić do kłopotów, jeśli pozostałe bity rejestru nie są wszećniej użyte, a w twoim przypadku nie są to zapis:
Zaloguj się, aby zobaczyć kod
jest po prostu czytelniejszy i bezpieczniejszy.
Zaloguj się, aby zobaczyć kod
cli/sei jest tu zbędne. Ponadto wcześniejsza uwaga dotycząca |= też ma zastosowanie.