Die LCD-Ausgabe brauch sehr viel Zeit, das sollte die 4kHz erklären. Die LCDs vertragen nicht so schnelle Datenschübe, daher wird in der Routine quasi mit WAITUS / WAITMS gearbeitet.
Den Aufruf würde ich einfach mit in die IFs packen, so dass die Anzeige nur dann aktualisiert wird, wenn du klickst. Allerdings bräuchtest du auch ne Art Entprellung, damit du nicht pro Klick 20 Schritte hochgehst.