habe das ganze eben noch auf 8bit umgesteckt und auf PD gelegt und RS und E auf PB1-2. Ein Programm geschrieben für eine Routine, die ich mit dem Datenblatt bekommen habe. Leider hat nichts funktioniert.
Kann man die Leitungen direkt mit den Port-Pins verbinden oder müssen da noch Widerstände oder so zwischen?
Habe schon soviele Routinen ausprobiert, dass ich jetzt nur noch mit einem Schaltungsfehler rechne.
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 ;Port D = Ausgang
out DDRD, temp1
ldi temp1, 0x02 ;Port B 1 als Ausgang und 2 als Eingang
out DDRB, temp1
rcall lcd_init ;Display initialisieren
loop:
rjmp loop
lcd_init:
rcall wait1sek ;1Sek nach Einschalten warten
ldi temp1,0x00 ;RS=0
out portb,temp1
ldi temp1,0x30 ;30h senden
out portd,temp1
rcall wait4500us ;4,5ms warten
ldi temp1,0x00 ;RS=0
out portb,temp1
ldi temp1,0x30 ;30h senden
out portd,temp1
rcall wait120us
ldi temp1,0x00 ;RS=0
out portb,temp1
ldi temp1,0x30 ;30h senden
out portd,temp1
rcall busyflagcheck ;busyflag kontrollieren E=0 PB2=0
ldi temp1,0x00 ;RS=0
out portb,temp1
ldi temp1,0x3c ;4 Displayzeilen, 8bit Ansteuerung
out portd,temp1
rcall busyflagcheck
ldi temp1,0x00 ;RS=0
out portb,temp1
ldi temp1,0x08 ;Display aus zum testen
out portd,temp1
ret
busyflagcheck:
in temp1,portb
sbrs temp1,2
rjmp busyflagcheck
ret
wait1sek:
; =============================
; delay loop generator
; 4000000 cycles:
; -----------------------------
; delaying 3999996 cycles:
ldi R17, $24
WGLOOP0: ldi R18, $BC
WGLOOP1: ldi R19, $C4
WGLOOP2: dec R19
brne WGLOOP2
dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
; -----------------------------
; delaying 3 cycles:
ldi R17, $01
WGLOOP3: dec R17
brne WGLOOP3
; -----------------------------
; delaying 1 cycle:
nop
; =============================
ret
wait4500us:
; =============================
; delay loop generator
; 18000 cycles:
; -----------------------------
; delaying 17985 cycles:
ldi R17, $37
WGLOOP4: ldi R18, $6C
WGLOOP5: dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
; -----------------------------
; delaying 15 cycles:
ldi R17, $05
WGLOOP6: dec R17
brne WGLOOP2
; =============================
ret
wait120us:
; =============================
; delay loop generator
; 480 cycles:
; -----------------------------
; delaying 480 cycles:
ldi R17, $A0
WGLOOP7: dec R17
brne WGLOOP0
; =============================
ret
Lesezeichen