Totalna masakra

, w przerywaniu najwyżej umieść flagę która będzie zapalana jak przylatują dane do bufora UDR.
Czyli zasada jest taka, robisz obsługę gdzie masz buffor np. 32znaki do niego automatycznie jest pobierana dana z UDR za każdym razem jak do UDR trafia znak i to procesor robi w przerywaniu tylko.
Następnie robisz potwierdzenie że bufor się zapełnia i sprawdzasz w pętli głównej tą flagę i dopiero jak ona się "zapala" to obsługujesz bufor, dzięki czemu masz bezkolizyjną obsługę uarta.
Masz może książki Mirka?
W zielonej książce jest dobre rozwiązanie twojego problemu. Ewentualnie możesz obejrzeć poradniki na temat calbacków i eventów i samemu spróbować napisać kod.
PS. Kod w przerywaniu ma być jak najszybszy/najkrótszy czyli wykonujący się błyskawicznie by nie blokować głównej pętli programu.