Na ja, wie gesagt, das Beispiel von Kjion ist die halbe Miete, wobei der µC damit Beschäftigt ist auf die ankommenden Zeichen zu warten.
Eleganter ist es einen Interrupt auszulösen, wenn ein Zeichen gekommen ist.
erstelle Dir ein Puffer volatile unsigned char puffer[10], eine hilfsvariable volatile unsigned char zaehler, lass das Zeichen das sich in UDR befindet nach zeilenvorschub prüfen ASCII Code 13 bzw. 0x0D, wenn TRUE dann hängst Du noch ein '\0' an dein Puffer hintendran setzt Dein zaehler auf 0 und vergleichst den Puffer mit Konstanten wie CH1 oder wie auch immer.

Wenn kein Zeilenvorschub im UDR drin ist schreib Dir das zeichen in das Array an der zaehler Stelle, erhöhe den zaehler um 1, und verlasse den Interrupt.

Worauf man aber achten sollte ist daß der Puffer nicht überläuft, das dürfte aber kein großes Problem werden.

Versuch einfach irgendwas zu schreiben, und wenn es nicht klappt poste Dein Programm hier rein, es wird Dir sicher jemand helfen können.

Gruß Sebastian

P.S. Solte ich irgendwas falsches von mir gegeben haben, möge man mich darauf hinweisen.