Also ich habs rausgefunden:
RXC ist gesetzt, wenn ungelesene Daten da sind. Dh ich hab RXEN mit RXC verwechselt und loop_until_bit_is_clear muss mit loop_until_bit_is_set ausgetauscht werden.

Das while soll schon so sein, da er ja immer wenn ein Zeichen kommt es ausgeben soll.

Trotzdem danke für die Mühe. mfg
jagdfalke