Vielen Dank erstnal für die Antwort! Hab meine Schleifen jetzt um gemodelt. Das sollte nun eigentlich ncihtmehr das Problem sein. Trotzdem bin ich so langsam am verzweifeln. Versuche den ganzen Tag schon dieses Display zum laufen zu bekommen. Aber es will nicht wie ich will. Ich hab jetzt mal meinen Code angehängt. Wie das Display an den Controller angeschlossen ist steht auch da drin. Vielleicht kann mir ja jemand weiterhelfen. Würde mich sehr freuen.

MFG

Mr Bean

Code:
.include "m8def.inc"

.def temp1 = r16
.def temp2 = r17
.def temp3 = r18

			ldi temp1, LOW(RAMEND)		;LOW-Byte der obersten RAM-Adresse
			out SPL, temp1
			ldi temp1, HIGH(RAMEND)		;High-Byte der obersten Ram-Adresse
			out SPH, temp1

			ldi temp1, 0xFF				;PortB=Ausgang
			out DDRB, temp1

			rcall lcd_init				;Display initialisieren
			rcall lcd_clear				;Display löschen

			ldi temp1, 'T'				;Zeichen anzeigen
			rcall lcd_data

			ldi temp1, 'e'
			rcall lcd_data

			ldi temp1, 's'
			rcall lcd_data

			ldi temp1, 't'
			rcall lcd_data

loop:
			rjmp loop



; LCD Routinen

;4-Bit Interface
;BDB4-BDB7: PB0 - Pb3
;RS: PB4
;E: PB7

;sendet ein DAtenbyte an das LCD

lcd_data:
			mov temp2, temp1			;"Sicherungskopie" für die Übertragung des zweiten Nibbles
			swap temp1					;vertauschen
			andi temp1, 0b00001111		;oberes Nibble auf 0 setzen
			sbr temp1, 1<<4				;entspricht 0b00010000
			out PORTB, temp1			;ausgeben
			rcall lcd_enable			;Enable-Routine aufrufen


			andi temp1, 0b00001111		;obere Hälfte auf null setzen
			sbr temp2, 1<<4				;entspricht 0b00010000
			out PORTB, temp2			;ausgeben
			rcall lcd_enable			;enable routine aufrufen
			rcall delay50us			;Delay routine aufrufen
			ret							;zurück zum Hauptprogramm
			
;sendet einen Befehl an das LCD

lcd_command:							;wie lcd_data, nur ohne RS zu setzen

			mov temp2, temp1				
			swap temp1	
			andi temp1, 0b00001111
			out PORTB, temp1
			rcall lcd_enable
			andi temp2, 0b0001111
			out PORTB, temp2
			rcall lcd_enable
			rcall delay50us
			ret

;erzeugt den Enable-Puls

lcd_enable:

			sbi PORTB, 7				;Enable high
			nop							;6 Taktzyklen warten
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			cbi PORTB, 7				;Enable wieder low
			ret							;wieder zurück

;Pause nach jeder Übertragung

delay50us:								;50us Pause

			ldi  temp1, $E9
WGLOOP0:  	dec  temp1
          	brne WGLOOP0
			ret							;wieder zurück

;Längere Pause für manche Befehle

delay5ms:								;5ms Pause

			ldi temp1, $8F
WGLOOP2:	ldi temp2, $E7
WGLOOP3:	dec temp2
			brne WGLOOP3
			dec temp1
			brne WGLOOP2

			ldi  temp1, $01
WGLOOP4:  	dec  temp1
          	brne WGLOOP4

			ret							;wieder zurück
			
;Initialisierung: muss ganz am Anfang des Programms aufgerufen werden

lcd_init:
			ldi temp3,50
powerupwait:
			rcall delay5ms
			dec temp3
			brne powerupwait
			ldi temp1, 0b00000011		;muss 3 mal hintereinander gesendet werden zur Initialisierung 
			out PORTB, temp1			;1
			rcall lcd_enable
			rcall delay5ms
			rcall lcd_enable			;2
			rcall delay5ms
			rcall lcd_enable			;3
			rcall delay5ms
			ldi temp1, 0b00000010		;4Bit Modus einstellen
			out PORTB, temp1
			rcall lcd_enable
			rcall delay5ms
			ldi temp1, 0b00101000
			rcall lcd_command
			ldi temp1, 0b00001100
			rcall lcd_command
			ldi temp1, 0b00000100
			rcall lcd_command
			ret

;sendet einen Befehl zur Löschung des Displays

lcd_clear:

			ldi temp1, 0b00000001		;Display Löschen
			rcall lcd_command
			rcall delay5ms
			ret