Hi,
du solltest "I" nach dem auslesen löschen.
I=""
Abgesehen davon springst du zwar nach Zeile 1, danach aber nicht mehr zurück. Das heißt "Zeile2" wir immer auch noch ausgeführt.
Du schreibst dann die eine Zeile des Displays jeweils voll und hängst da deinen Text dran.
Der wird dann allerdings in den Zeichenbuffer geschrieben und nicht da, wo er hin soll.
Also noch ein Locate Befehl dazu um an die richtige Stelle zu schreiben
Code:$regfile = "m8def.dat" 'Controller definieren' $crystal = 3686400 'Taktfrequenz definieren' $baud = 19200 'Baudrate definieren Enable Interrupts 'LCD-Anschlüsse definieren, Ansteuerungsmodus 4 Bit / Pin ' Config Lcdpin = Pin , E = Portb.5 , Rs = Portb.4 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 Config Lcd = 24 * 2 Initlcd Cursor Off Cls Dim I As String * 24 Dim T As String * 22 Dim B As String * 2 Do Input , I 'max 24 zeichen einlesen B = Left(i , 2) 'ersten beiden zeichen des String in Variable B schreiben T = Mid(i , 3 , 22) 'ab drittem zeichen alles in Variable T schreiben If B = "Z2" Then : Gosub Zeile1 : End If 'wenn ersten beiden zeichen = z1 oder z2, dann springe If B = "Z1" Then : Gosub Zeile2 : End If Print B 'testweise ausgabe der ersten beiden zeichen Print T I = "" 'testweise ausgabe der folgenden zeichen Loop End Zeile1: Upperline Lcd " " 'beschreibe obere Zeile mit Leerzeichen zum Löschen Locate 1 , 1 Lcd T 'gebe alles ab drittem zeichen aus Return Zeile2: Lowerline Lcd " " Locate 2 , 1 Lcd T Return
Hab's aber nicht getestet....
Gruß
Christopher







Zitieren

Lesezeichen