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







Zitieren

Lesezeichen