ok habe das jz. auch schon probiert
ich glaube es liegt an diesen Unterprogrammen
LcdBusy
bsf STATUS, RP0 ; make Port B4..7 input
movlw B'11110000'
iorwf TRISB, f
bcf STATUS, RP0
BusyLoop
bcf LcdRs ; Steuerregister
bsf LcdRw ; Lesen
bsf LcdE
nop
movf LcdPort, w ; 4 obere Bits lesen (D7..D4)
movwf LcdStatus ; und in LcdStatus speichern
bcf LcdE
nop
bsf LcdE
nop ; 4 untere Bits lesen (D3..D0) und ignorieren
bcf LcdE
btfsc LcdStatus, 7 ; teste bit 7
goto BusyLoop
bcf LcdRw
bsf STATUS, RP0 ; make Port B4..7 output
movlw B'00001111'
andwf TRISB, f
bcf STATUS, RP0
return
;*****************************************************
; aus W ein Byte mit Steuerdaten zum Display ?bertragen
OutLcdControl
movwf LcdDaten ; Byte in LcdDaten zwischenspeichern
call LcdBusy ; warten bis Display bereit ist
movf LcdDaten, w ; Byte zur?ck nach W holen
andlw H'F0' ; low-Teil l?schen
movwf LcdPort ; Hi-teil Daten schreiben
bsf LcdE
nop
bcf LcdE ; Disable LcdBus
swapf LcdDaten, w ; Byte verdreht nach W holen
andlw H'F0' ; High Teil l?schen
movwf LcdPort ; Low-teil Daten schreiben
bsf LcdE
nop
bcf LcdE ; Disable LcdBus
return
aber ja ich kenne mich zwar mit den alten Display Typ aus
aber dieses EADOGM kriege ich einfach nicht hin.
weist du vl. an was das noch liegen könnte??
was ich gerade nebenbei gemerkt habe ist
das du mir ja geschrieben hast:
movlw B'00110000' ; Function set 1
call Control8Bit ; <- Achtung, keine Busyabfrage möglich
movlw B'00110000' ; Function set 2
call Control8Bit ; <- Achtung, keine Busyabfrage möglich
movlw B'00110000' ; Function set 3
call Control8Bit ; <- Achtung, keine Busyabfrage möglich
movlw B'00100000' ; Function set 4
da heist es ja keine Busyabfrage möglich nur dannach im Code will er ja das Busy ja abfragen
LcdBusy
bsf STATUS, RP0 ; make Port B4..7 input
movlw B'11110000'
iorwf TRISB, f
bcf STATUS, RP0
BusyLoop
bcf LcdRs ; Steuerregister
bsf LcdRw ; Lesen
bsf LcdE
nop
movf LcdPort, w ; 4 obere Bits lesen (D7..D4)
movwf LcdStatus ; und in LcdStatus speichern
bcf LcdE
nop
bsf LcdE
nop ; 4 untere Bits lesen (D3..D0) und ignorieren
bcf LcdE
btfsc LcdStatus, 7 ; teste bit 7
goto BusyLoop
bcf LcdRw
bsf STATUS, RP0 ; make Port B4..7 output
movlw B'00001111'
andwf TRISB, f
bcf STATUS, RP0
return
du kennst dich da besser aus als ich.