Moin!

Ein String ist ein Array of Char.
Es gibt zwei Möglichkeiten dein Problem zu lösen.
Die Primitive:
Man kann sich anfangs einen Buffer erzeugen (volatile char ca_x[20], mit der maximalen Nachrichtengrösse, dazu einen volatile char counter, der bei jedem empfangenen Zeichen hochgezählt wird und als Index für das Array genutzt wird.
Interrupt:
counter++;
ca_x[counter]=Zeichen vom UART;


Eleganter dürfte die Variante mit Pointern sein, aber auch da wird der Pointer im Interrupt hochgesetzt. Und dann an die Stelle auf die der Pointer zeigt das Zeichen geschrieben.


Zum Problem mit dem char Vergleich:
Eigentlich müsste es gehen. (Bei mir geht es, aber ich nutze auch einen Fujitsu Microcotroller & Workbench)

Man könnte das Problem umgehen, in dem man die Zeichen nach dem Ascii Code zu Zahlen umwandelt. Also nicht uc=='a' sondern uc==0x61 oder uc==97.

eine empfehlenswerte Seite:
http://www.pronix.de/pronix-735.html

MfG Argentan