Wozu brauchst du immer noch nen Oszi?

uart_getchar() liefert aber keinen unsigned char, sondern einen int!!! Das hat folgenden Grund: so kann signalisiert werden, dass kein neues Zeichen empfangen wurde. Dann ist der Rückgabewert nämlich -1. Wenn man nun also auf ein Zeichen wartet, macht man folgendes: in einer Schleife ruft man immer wieder uart_getchar() auf, solange bis keine -1 mehr zurückkommt. Dann steht im gelesenen int das Zeichen, und man kann es in nen char casten und weiterverarbeiten.
Code:
int c;

while (1)
{
uart_putstring("\n\n\r drueck g");
do{
	c = uart_getchar();
} while (c==-1);

if((char)c=='g'){
uart_putstring("\n\n\rhallo");}
else
uart_putstring("\n\n\rtschuess");
}