Hallo Kampi,
ich habe so das Gefühl, dass du die Nummer mit den Overlays noch nicht so richtig drin hast.
Wenn du ein Overlay von Bytes über einen String legst, dann ist einer der entscheidenen Vorteile in Punkto Geschwindigkeit, dass du so etwas
Eingabe = Eingabe + Chr(Zeichen)
nicht machen musst. Ebensowenig ein
Laenge = Len(Eingabe)
Dein URXC ISR sollte dann so aussehen:

Code:
Uart_received:
   Zeichen = Udr
   If Zeichen = 13 Then
      Eingabe_overlay(buffer_laenge) = 13         ´warum machst du das überhaupt?
      Eingabe_overlay(buffer_laenge + 1) = 0                          ´string ende
      Auswertung
   Elseif Zeichen > 13 Then
      Eingabe_overlay(buffer_laenge) = zeichen
      Incr Buffer_laenge
      If Buffer_laenge > 49 Then
           Eingabe_overlay(buffer_laenge + 1) = 0                          ´string ende
           Auswertung
      End If
   End If
Return
Wenn du 13 eigentlich gar nicht benötigst würde ich es so verkürzen:
Code:
Uart_received:
   Zeichen=UDR
   If Zeichen>13 then
      Eingabe_overlay(buffer_laenge) = zeichen
      Incr Buffer_laenge
   End if
   If Zeichen=13 or Buffer_laenge = 50 then
      Eingabe_overlay(buffer_laenge+1)=0
      Auswertung
   end if
Return