Du schreibst, das LCD hängt wie folgt an dem PCF:
LCD PCF-Pin
D4 P0
D5 P1
D6 P2
D7 P4
Ich unterstelle mal, daß die P4 ein Schreibfehler ist und P3 heißen
sollte. Trotzdem schiebst Du in LCDOutc das lower Nibble um 4 bit nach
oben. Dabei ist es doch schon dort, wo es hingehört. Das Upper Nibble
mußt du nach unten schieben!
Bei den defines am Anfang hast Du für RS E RW die Bitnummer und nicht
die Wertigkeiten angegeben. Richtig wäre:
E 128 ; oder 1<<7
RW 64 ; oder 1<<6
RS 32 ; oder 1<<5
Zum Setzen und Löschen von Bits in einem Byte solltest Du mit den AND
und OR Operatoren arbeiten und nicht mit + und -! Sonst bekommst Du ein
Problem, falls die bits aus irgendwelchen Gründen vorher schon gesetzt
waren...
z.B.:
byte = byte & E;
byte = byte | (255-E);
Was war mit meinem Code? Lief der nicht?
CU
Markus_8051