Wie viele Quarze hängen da dran?
Falls es nur einer ist, ist mir das erste, was auffällt, das hier:
Der Uhrenquarz hat ~32kHz, im Programm wird aber "$crystal = 14745600" angegeben. Aber das dürfte eigentlich nicht der Fehler sein.
Welche der Zeilen ist denn diese Zeile 32? (Nachzählen im Code haut nicht hin, rauskopieren auch nicht, da da blöderweise noch Leerzeilen mit drin sind, wo man nicht weiss, ob die noch dazugehören oder nicht.)

Ansonsten seh ich da auf die schnelle keinen Fehler. Habs auch grad mal kompiliert und da gehts bei mir ohne Probleme.