Dein Programm ist ganz großer Käse.
LCDputs hat im Timerinterrupt nichts zu suchen, weil 1. schnarchlahm und
2 nicht reentrant.
D.h. es sind warscheinlich mehrere Overflows vergangen, ehe im Interrupt
die Ausgabe fertig ist.
Und es gibt lustigen Zeichensalat, wenn das LCDputs im Interrupt
zufällig das LCDputs im Main unterbricht.
LCDs brauchen generell einige Zeit, um was darzustellen und der Mensch
braucht noch viel länger, um es abzulesen. Nach einer LCD-Ausgabe
sollten daher mindestens 200ms Pause sein.
Es macht auch keinen Sinn, das Interruptflag zu testen und nen
Interrupthandler aufzusetzen.
Du mußt Dich schon entscheiden, ob Polling oder Interrupt, beides geht
nicht (der Interrupt zieht fast immer dem Polling das Bit unterm Hintern
weg).
Peter