Auszug Hauptprogramm: --------------------------------------------------------------------- .set lcd_zeile = 1 ; Cursorposition Zeile .set lcd_spalte = 1 ; Cursorposition Spalte rcall lcd_locate ; DDRAM Adresse setzen nop ldi ZL, LOW(text1*2) ; Adresse des Strings in den ldi ZH, HIGH(text1*2) ; Z-Pointer laden rcall lcd_flash_string ; Unterprogramm gibt String aus der ; durch den Z-Pointer adressiert wird .set lcd_zeile = 2 ; Cursorposition Zeile .set lcd_spalte = 5 ; Cursorposition Spalte rcall lcd_locate ; DDRAM Adresse setzen ldi ZL, LOW(text*2) ldi ZH, HIGH(text*2) rcall lcd_flash_string ende: rjmp ende text: .db "Oh Mann",0 ; Stringkonstante, durch eine 0 text1: .db "Das ist ein Test ",0 .include "lcd-routines_gg.asm" --------------------------------------------------------------------- Auszug IncludeDatei: lcd-routines_gg.asm --------------------------------------------------------------------- lcd_locate: push temp1 push r17 push r18 ldi r17, lcd_spalte - 1 ; Erste Stelle von LCD = 0 ldi r18, lcd_zeile ; Variable in Register cpi r18, 2 ; Ist Zeile 2 brne label_1 ; ist nicht Zeile 2 ldi temp1, 0x40 ; Adresse für Zweite Zeile H40 sbr temp1, 0x80 ; Bit 7 setzen. rjmp label_2 ; Setzen erste Zeile überspringen label_1: ldi temp1, 0 ; Zeile eins bei Null sbr temp1, 0x80 ; Bit 7 setzen. label_2: nop add temp1, r17 ; Wert fuer Spalte dazu rcall lcd_command ; LCD Befehl schreiben .set delay_time_ms = 5 rcall delay_ms pop r18 pop r17 pop temp1 ret