Hallo,
wie programmiert ihr einen Zeilenumbruch?
LCD: 4*20 Zeichen
Der Text wird über die serielle Schnittstelle -> UDR empfangen und in einem String*20 geschrieben.
Nun war die Überlegung den String*80 zu machen und mit MID aufzuteilen. Leider habe ich hier nur einen ATtiny2313 zur Verfügung und der schafft nur String*60 maximal.
Was mir aufgefallen ist: Wenn ich mehr als 20 Zeichen sende, erscheinen die aber (etwas abgehackt) trotzdem auf dem LCD? wieso? wird der String nicht erst wieder leer gemacht und dann mit LCD auf dem Display überschrieben?
Tobias
mein Code bisher...
Code:'------------------------------------------------------------------------------- 'Konfiguration µC: $regfile = "ATtiny2313.dat" 'ATtiny2313-Deklarationen $hwstack = 32 $swstack = 8 $framesize = 24 '$crystal = 14745600 'Quarz: 14,7456 MHz $crystal = 8000000 $baud = 9600 'Baudrate definieren '------------------------------------------------------------------------------- 'Ein / Ausgänge definieren: Ddrd = &B1111111 'Pin PD5-0 als Eingang / 6 als Ausgang (LCD) konfigurieren Ddrb = &B11111111 'PullUps setzen: Portd = &B0111100 '1 = PullUp AKTIV Portb = &B00100000 '1 = PullUp AKTIV '------------------------------------------------------------------------------- 'LCD konfiguration Config Lcd = 20 * 4 'LCD größe Config Lcdpin = Pin , Rs = Portb.4 , E = Portb.3 , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 Cursor Off Noblink '------------------------------------------------------------------------------- 'Alias Taster1 Alias Pind.2 Taster2 Alias Pind.3 Taster3 Alias Pind.4 Taster4 Alias Pind.5 Taster5 Alias Pinb.5 '------------------------------------------------------------------------------- 'Variablen Dim Parameter As String * 20 'max 60 Dim E_byte As Byte , E_flag As Byte '------------------------------------------------------------------------------- Cls Locate 1 , 1 Lcd "RS232 - LCD" '------------------------------------------------------------------------------- 'Für RS232: On Urxc Onrxd 'Interrupt-Routine setzen Enable Urxc 'Interrupt URXC einschalten Enable Interrupts 'Interrupts global zulassen '------------------------------------------------------------------------------- Do 'Hauptschleife 'Tasterabfrage: If Taster1 = 0 Then Print "Taster1" Cls Lcd "Taster1" End If 'RS232 - Empfang umwandeln If E_flag = 1 Then 'Empfangsstring komplett ' Substring = Mid(String , A , B) Print Parameter Cls Lcd Parameter Parameter = "" 'Parameter löschen E_flag = 0 'Empfang neu setzen End If Loop '------------------------------------------------------------------------------- Onrxd: E_byte = Udr If E_byte = 13 Then '13 = CR (Enter) E_flag = 1 Else Parameter = Parameter + Chr(e_byte) End If Return
Lesezeichen