Jako, że ciągle jestem początkujący w programowaniu uC po ciężkich bojach myślowych i kombinowaniu udało się osiągnąć cel (chyba)

Program ma na celu wyświetlanie odebranej ramki danych na wyświetlaczu 7segmentowym. W życiu będzie wykorzystanych 6 segementów jednak do testów na płytce stykowej mam jedynie 4 dlatego jest nieco obkrojony kod

W przerwaniu odczytywana jest cała ramka i zapisywana do tablicy, poczym sprawdzane jest czy charakterystyczne znaki na danych miejscach zostały odebrane co świadczy o poprawnej ramce, dalej funkcja wycisna z ramki odpowiednie znaki i wpisuje je do tablicy waga. Gdy jest zero po krótkim czasie przechodzi w stan czuwania i się wygasza, taka sama sytuacja jest gdy nie ma transmisji
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jeżeli macie jakieś sugestie co do uproszczenia kodu prosze o info

Jedyne co jest denerwujące to to, że podczas trwania przerwania Timera1, ktore odywa się co ok. 4sekundy wyświetlacz zamruga. Można to jakoś wyeliminować czy to już taki urok multipleksowania?