Wie gesagt, mein Assembler versteht dieses CODE garnicht. Aber ich denke das du damit nur den CODEspeicher deklarieren kannst. Versuch doch mal ein EQU. Bei mir geht das.
Und das du nur 4-Bit angeschlossen hast ist klar. Aber bei der initialisierung tust du einfach so als wären es 8.
Leg einfach nur das Highnibble ans Display an und pulse Enalble. So wie in dem Code den ich oben geschrieben hab. Das Bitmuster zum Reset war bei dir auch nicht richtig. Du mußt genau das Bitmuster aus dem Datenblatt senden.
Nach dem Reset mußt du dann das Bit für den 4-Bit Modus stellen und wieder Enable pulsen.
Ab jetzt kannst du im 4-Bit-Modus arbeiten.
Und als erstes sendest du den "Function Set"-Befehl. Der wird nämlich nur an dieser Stelle akzeptiert.
Und ein kleiner Fehler ist mir gerade noch aufgefallen:
Code:
LCD_send:
call LCD_ws ;hier muß noch eine Wartezeit rein da du das Busy nicht abfragst
MOV C,ACC.7 ; high-nibble ausgeben
MOV LCD_D7,C
MOV C,ACC.6
MOV LCD_D6,C
MOV C,ACC.5
MOV LCD_D5,C
MOV C,ACC.4
MOV LCD_D4,C
SETB LCD_ENABLE
; call LCD_ws ;bei mir ist das nicht nötig, prozessor so schnell?
CLR LCD_ENABLE
call LCD_ws ;hier muß noch eine Wartezeit rein da du das Busy nicht abfragst
MOV C,ACC.3 ; low-nibble ausgeben
MOV LCD_D7,C
MOV C,ACC.2
MOV LCD_D6,C
MOV C,ACC.1
MOV LCD_D5,C
MOV C,ACC.0
MOV LCD_D4,C
SETB LCD_ENABLE
; call LCD_ws
CLR LCD_ENABLE
RET
Hab reingeschrieben was mir noch aufgefallen ist.
Lesezeichen