Hallo

Der Code sieht soweit gut aus.

Was mir jetzt so auffällt ist, das du Daten nicht zurück setzt. Einmal a empfangen, bleibt a solange in Daten bis ein neues Zeichen kommt.

Versuch es mal so

Code:
if(Daten == 'a')
      {
     Daten = 0;    
     lcd_gotoxy(1,1);
      lcd_puts ("a"); }
Oder zum eingrenzen von Fehler mal so. Dann siehst du, ob ein INT erzeugt wird.

Code:
SIGNAL(SIG_UART_RECV)
{
       Daten = UDR;
       UDR = Daten +1;       //Zeichen +1 zurück senden
}

MFG
Dieter