Hallo Blamaster,

evtl. ist ein Tipp dabei:

- groszügige Verzögerungsschleifen (Display Controller sind keine Rennflitzer)
- Abfrage des Busy-Flags

-----------------------------------------------------------------------
Display_initiieren:
rcall warte20 ; Reset vom Display abwarten

ldi Befehl,0b00111000 ; Befehl "Function Set"
rcall Display_Befehl_schreiben
rcall warte20
rcall Display_Befehl_schreiben
rcall warte10
rcall Display_Befehl_schreiben
rcall warte1

rcall Display_bereit
ldi Befehl, 0b00111000 ; lade Befehl "2-zeilig, 5x8"
rcall Display_Befehl_schreiben

rcall Display_bereit
ldi Befehl, 0b00001000 ; lade Befehl "Display aus"
rcall Display_Befehl_schreiben

rcall Display_bereit
ldi Befehl, 0b000000001 ; lade Befehl "Display löschen"
rcall Display_Befehl_schreiben

rcall Display_bereit
ldi Befehl, 0b000000110 ; Befehl "Cursor nach rechts"
rcall Display_Befehl_schreiben

rcall Display_bereit
ldi Befehl, 0b000001111 ; lade Befehl "Display ein"
rcall Display_Befehl_schreiben
ret
-----------------------------------------------------------------------

Erklärungen:

- rcall wartenxx: Subroutine mit Verzögerung um xx mSekunden

- rcall Display_Befehl_schreiben: Subroutine, die Datenport auf "schreiben" setzt und Befehl ausgibt

- rcall Display_bereit: Subroutine die Datenport auf "lesen" setzt und wartet, bis das Busy-Flag frei ist

Gruß.