ganz einfach:
mit "lcd_buf = &B00000100" setzt Du das dritt-niedrigste bit auf eins; das heisst aber nicht PORT[14], sondern PORT[11], und ist deshalb nicht das EN - bit.
Das BYTEPORT[2] ist schon so zum LCD verdrahtet, wie du's geschrieben hast, NUR:
Du hast die Reihenfolge der bits in Deinem Bild verkehrt rum aufgemalt. PORT[9] ist derjenige mit dem niederigsten Wert; den musst Du ganz nach RECHTS zeichnen, wenn Du Dich nachher an diesem Bild orientieren willst, um den LCD_BUF mit bits zu laden:
X EN RS RW d7 d6 d5 d4 ... Bedeutung für LCD
16 15 14 13 12 11 10 9 ... PORT-Nummer der CC1
Jetzt kannst Du schreiben: LCD_BUF = &B00100000;
da gibst Du ja auch ganz RECHTS das Bit mit dem geringsten Wert an.
Und das "RS" gehört ja in das dritt-höchste bit (PORT[14]), das muss also im Bild (und auch in der bit-Maske) an dritter Stelle von LINKS stehen.
Lesezeichen