Zitat Zitat von SlimJim1988
Kannst du mir evt erklären was dein Code anders macht als meiner?
LCD Ausgaben brauchen ihre Zeit. In deiner Do..Loop wird bei jedem Umlauf d die Variable Led auf 1 gesetzt, das LCD auf die erste Stelle in der ersten zeile positioniert und dann der Text "Main" ausgegeben. Und das, obwohl sich in der Zwischenzeit ja gar nichts geändert hat. Wenn du zu schnell auf das LCD schreiben willst, wird der Text nicht mehr gut lesbar. Du solltest versuchen, dass so zu ändern, dass nur geschrieben wird, wenn es etwas neues anzuzeigen gibt.

Wenn du also eine Do..Loop hast, in der praktisch auf die nächste Eingabe gewartet wird, dann sollte diese nur über den GetAtKbd Befehl laufen. Ich nehme an, dass der Befehl 0 zurückliefert, wenn keine Taste gedrückt wurde. Dann würde ich das etwa so machen:

Do
Key = GetAtKbd()
Loop Until Key > 0

Jetzt kommt die Auswertung von Key. Da das Programm die Schleife nur verlassen kann, wenn eine Taste gedrückt wurde, kannst du nun z.B. über ein Select..Case oder auch mehrere Ifs ein entsprechende Aktion ausführen. Dies muss nicht unbedingt in einer Sub ablaufen, kann es aber.
Also etwa so:

Select Case Key
Case 119: Call Test
Case 125: Befehle
End Select

In den Subs führst du dann die gewünschten Aktionen aus, evtl. inklusive einer Anzeige aud dem LCD. Sorge nur dafür, dass nicht zu schnell aufs LCD geschrieben wird.

Gruß

Rolf