Generalnie odpowiem od końca

Nie wiem czego kod w poście wyżej był ucięty, gdyż prawidłowo inicjacja usarta wygląda tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zdecydowałem się na użycie przerwania generowanego timerem. Udało mi się uruchomić timer który po jakimś czasie zmienia stan diody na przeciwny. Niestety zadam następne pytanie, niestety prawdopodobnie bardzo głupie. Jak wpakować do bufora ten znak w tym przerwaniu?Bo szczerze mówiąc nie mam pojęcia, jak to zaimplementować kodem.
Kod który mam do generowania przerwania timerem:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
==============
EDIT:
Bez obsługi seriala wszystko śmiga, nie ma żadnych problemów, wraz z dołączeniem do projektu przerwania generowanego timerem serial wariuje, nie nie chodzi tu o sławne drgania styków

nie reaguje na podawany ciąg znaków, lub też reaguje w taki sposób, że resetuje się i wyświetla to co było zdefiniowane przed pętlą główną programu.
tutaj kod tego, co działa bez obsługi seriala, już powoli zaczynam się załamywać, gdyż siedzę nad tym już dobrych kilka godzin i nie potrafię sobie poradzić... Z tym serialem dzieje się po tym jak uruchamia się globalne obsługiwanie przerwań.
Generalnie od tego, jak będzie wariować decyduje gdzie umieści się sei(); po tym jak umieści się go tuż przed while(1) jest ten reset.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.