Ich sage mal der funzt nicht.

Mit Z = Z / 90000 teilst Du den Wert bei jedem Schleifendurchlauf aber zählst ihn nur einmal im Timerinterrupt hoch. Wie soll der Wert da je größer 1 werden?

Warum fragst Du nicht einfach ob Z > 90000 ist um deinen Wert zu speichern, das is sicher von der Programmabarbeitung auch schneller als ne division. Den Z-Wert müßte man auch mal wieder auf 0 setzen.

MfG