Ich kann zwar um diese Uhrzeit noch nicht 100% genau verstehen, was wann wie passieren soll - aber mir fällt in Deinem Code ein klassischer Fehler auf:



Code:
If Sekunde = 0 And Minute = 0 Then
      Stop Timer1
      Goto Done
Dadurch verlässt der Controller die ISR, ohne über "return" gegangen zu sein. Das geht ein paar mal gut, aber irgendwann läuft der Stack über, weil immer nur was draufgepackt wird, aber nichts wieder runtergenommen wird. Das ist eine der sichersten methoden, ein Porgramm "aufzuhängen"

Eine Lösung wäre, mit der If-Abfrage das Setzen eines Flag-Bits zu verbinden, die ISR ganz normal über Return zu beenden, und in der Hauptschleife eben dieses Flag abzufragen.