musst ja nur das umtauschen weglassen (swap) und die initialisierung ein bisschen abwandeln.


hier mal meine 8-bit ansteuerung:

PD0-PD7 entspricht DB0-DB7
Rs is an PC5
E an PC3

dieser code funktioniert.

Code:
;definitionsdatei

.equ DBport= portd ; ausgabeport
.equ RWport= portc ; RS,RW, E
.equ DBddr= ddrd ; datenrichtung ausgabe
.equ RWddr= ddrc ; datenrichtung rs, rw, e
.equ pine= 3
.equ pinrw= 4
.equ pinrs= 5

.device mega8
.include "m8def.inc"

; Stack initialisieren

ldi r16, LOW(RAMEND)
out SPL, r16

ldi r16, HIGH(RAMEND)
out SPH, r16

;****************hier starten********************
rcall ms10
rcall ms10
rcall ms10
rcall ms10
rcall ini

rjmp haupt

;****************Ein/Ausgänge*********************

ddrdaus:	ldi r16,	$ff ; Datenausgänge DB0-7
			out ddrd,	r16
			ret
ddrdein:	ldi r16,	0
			out ddrd,	r16
			ret
ddrcaus:ldi r16,	$ff ; kontrollausgänge RS;RW;E
			out ddrc,	r16
			ret
ddrcein:ldi r16,	0
			out ddrc,	r16
			ret

;****************Warteschleifen*******************
ms2:     
         		ldi r24, low (125)   			;// 2000 = µs = 2ms; 4 = takte
         		ldi r25, high (125)  			;// 2000 = µs = 2ms; 4 = takte
	ms21:    	sbiw r24,1           			;//2takte
         		brne ms21            			;//2takte
         		ret                  			;//4takte

ms5:                          
         		ldi r24, low (1250)   			;// 5000 = µs = 5ms; 4 = takte
         		ldi r25, high (1250)  			;// 5000 = µs = 5ms; 4 = takte
	ms51:    	sbiw r24,1           			;//2takte
         		brne ms51            			;//2takte
         		ret                  			;//4takte

ms10:                         
         		ldi r24, low (2500)   			;// 10000 = µs = 10ms; 4 = takte
		 		ldi r25, high (2500)  			;insgesamt 4Takte
	ms101:   	sbiw r24,1           			;//2takte
         		brne ms101            			;//2takte
         		ret                  			;//4takte

;****************Daten/Befehle senden*************

;----------Daten Senden
daten:		rcall ddrcaus
			rcall ddrdaus
			out portd,		r17
			sbi portc,	pinrs
			nop
			sbi portc, 	pine 
			nop
			nop
			nop
			nop
			cbi portc, 	pine
			rcall ms2
			ret

;----------Befehle Senden
befehl:		rcall ddrcaus
			rcall ddrdaus
			out portd,		r17
			nop
			sbi portc,	pine
			nop 
			nop
			nop
			nop
			cbi portc, 	pine
			rcall ms2
			ret		

;----------Befehl für ini mit zeit
befehlini:	rcall ddrcaus
			rcall ddrdaus
			out portd,		r17
			nop
			sbi portc,	pine
			nop 
			nop
			nop
			nop
			cbi portc, 	pine
			rcall ms5
			ret

;****************Initialisierung******************
ini:		rcall ddrdaus	;ddrd = ausgang
			rcall ddrcaus	;ddrc = ausgang
			ldi r17, 0x00
			out portd, r17
			ldi r17,	$30	;$30 = 3 mal auf ausgang
			rcall befehlini	; 1 befehl senden
			rcall befehlini	; 2 befehl senden
			rcall befehlini	; 3 befehl senden
			;Function set
			;DL = 1 = 8bit-modus, N = 1 = 2 Zeilen, 
			ldi r17, 	0b00111000 ;Funtion set, DL, N, F  
			rcall befehlini
			;Display ON/OFF
			ldi r17, 	0b00001110 ;Display, ON/Off, cursor an/aus, Block/Unterstrich  
			rcall befehlini
			ldi r17,	0b00000001
			rcall befehlini
			ret

;----------------Hauptprogramm-------------------

haupt:

ldi r17, '0'
rcall daten
ldi r17, '8'
rcall daten
ldi r17, '/'
rcall daten
ldi r17, '1'
rcall daten
ldi r17, '5'
rcall daten

loop:
	rjmp loop