Gut.
Ich hab mal bisschen was rausgesucht.
Damit sollte die Initialisierung und das Senden schonmal funktionieren.
Ist aber kein vollständiges Programm.
Damit solltest du schon weiterkommen.Code:INCLUDE ....... ;dein prozessor ;------------------------------------------------------------------------------- ;variablendeklaration rs EQU px.x rw EQU px.x en EQU px.x DB4 EQU px.x db5 EQU px.x db6 EQU px.x db7 EQU px.x ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------------- lcd-com: ;sendet einen Befehl im ACC ans LCD CLR rs CLR rw JMP lcd-write ;------------------------------------------------------------------------------------- lcd-out: ;sendet ein Zeichen im ACC ans LCD SETB rs CLR rw ;------------------------------------------------------------------------------------- lcd-write: ;beeinflusst ACC,Carry und R0-R2 MOV R2,#02h ;zwei durchläufe da zwei nibbles lcd-write1: call wait ;es könnte kurz vorher gesendet worden sein also lieber ;mal etwas warten bis das lcd bereit ist RLC A ;daten MOV db7,C ;schrittweise RLC A ;in carry schieben MOV db6,C ;und an datenport RLC A ;anlegen MOV db5,C RLC A MOV db4,C SETB en ;schreibimpuls CLR en DJNZ R2,lcd-write1 ;wiederholen wenn es der erste durchlauf war RET ;------------------------------------------------------------------------------------- ;------------------------------------------------------------------------------------- lcd-ini: CLR en CLR rs CLR rw CLR db7 ;lcd CLR db6 ;8-bit SETB db5 ;modus SETB db4 ; call wait-long ;länger warten SETB en ; CLR en ;senden call wait-long ;länger warten SETB en ;nochmal CLR en ;senden call wait-long ;länger warten SETB en ;nochmal CLR en ;senden call wait ;länger warten CLR DB4 ;4-bit modus SETB en ;senden CLR en ;------------------------------------------------------------------------------------- ;dispalyfunktionen initialisieren MOV A,#28h ;4bit, 2lines, 5x7 call lcd-com MOV A,#01h ;clr call lcd-com MOV A,#02h ;home call lcd-com MOV A,#06h ;inc no shift call lcd-com MOV A,#0ch ;disp. on ,curs. off ,blink off call lcd-com RET ;------------------------------------------------------------------------------------- wait-long: ;evtl die register retten wenn du sie brauchst MOV R0,#00h MOV R1,#00h wait-long1: DJNZ R0,wait-long1 DJNZ R1,wait-long1 RET ;------------------------------------------------------------------------------------- wait: ;evtl register retten wenn du sie brauchst MOV R0,#00h wait1: DJNZ R0,wait1 RET ;-------------------------------------------------------------------------------------
Ist aus einem funktionstüchtigen Programm. Sollte also klappen.







Zitieren

Lesezeichen