Ist von deinem PIC/LCD eigentlich ein Schaltplan da ?
KILLEN: wenn die Funktion lcd_write die Adresse eines strings erwartet, der mit einem \0 endet, und kriegt die Adresse von einem Einzelbyte, fängt er deine Memory zum displayen an, bis er eine Null findet. Das kann dauern und ein sehr langer String sein.
Noch schlimmer, wenn er "data" by Value kriegt, dann liest er überhaupt irgendwo.
Wenn's geht, schau dir den generierten Assembler an, vielleicht isser ja auch gescheiter als gedacht.
PS Wenn einer murkst, ist es eher der LCD. die MAXen sind normalerweise Büffeln, die keine Schwierigkeiten machen. Vielleicht laßt sich der LCD einzeln mal abhängen ?
mfg robert