LCD 4 Bit Dateninterface

Gast #69904
Lesenswert?

Hallo zusammen,

ich hab' da ein echtes Problem mit meinem LCD (HD44780U Controller)
8x2 Lines und 4 Bit Dateninterface. Ich möchte absolut keine Rechenzeit
verlieren und daher muss ich das Busyflag auswerten, leider klappt das
einfach nicht im 4 Bit Modi...
Im 8 Bit Modi funktioniert die Sache echt super mit dem fast gleichen
Codeausschnitt. Ich hab' keine Ahnung was ich noch probieren kann,
vielleicht hat ja schon jemand das Busyflag im 4 Bit Modi zum Laufen
gebracht oder hat sonst eine Idee.....

In Stiller Hoffung auf eine Lösung,
Michael
Angehängte Dateien:
Gast #69905
Lesenswert?

hab mal was aus dem Compilerlisting herauskopiert, das funktioniert
jedenfalls.Musst halt selbst durchsteigen.
Hoffentlich hast du daran gedacht, dass die Abfrage des busyflag erst
ab einem bestimmten Zeitpunkt der Initialisierung möglich ist?

          __base_y_G2:
000176        .BYTE 0x4
              .equ __lcd_direction=__lcd_port-1
              .equ __lcd_pin=__lcd_port-2
              .equ __lcd_rs=0
              .equ __lcd_rd=1
              .equ __lcd_enable=2
              .equ __lcd_busy_flag=7
          __lcd_x:
00017a        .BYTE 0x1
          __lcd_y:
00017b        .BYTE 0x1
          __lcd_maxx:
00017c        .BYTE 0x1

            .CSEG
          __lcd_ready:
0002e4 b3a4          in    r26,__lcd_direction
0002e5 70af          andi  r26,0xf                 ;set as input
0002e6 bba4          out   __lcd_direction,r26
0002e7 9aa9          sbi   __lcd_port,__lcd_rd     ;RD=1
0002e8 98a8          cbi   __lcd_port,__lcd_rs     ;RS=0
          __lcd_busy:
0002e9 d00c          rcall __lcd_delay
0002ea 9aaa          sbi   __lcd_port,__lcd_enable ;EN=1
0002eb d00a          rcall __lcd_delay
0002ec 999f          sbic  __lcd_pin,__lcd_busy_flag
0002ed cffb          rjmp  __lcd_busy
0002ee 98aa          cbi   __lcd_port,__lcd_enable ;EN=0
0002ef 9508        RET

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren