Meine Methode ist da wesentlich anders. Ich stelle die RTC, wenn die Zeit per NTP gestellt wurde (In Deinem Fall per DCF-Signal empfangen und für gültig erklärt wurde) und laufe die restliche Zeit mit der internen Uhr von Bascom. Einmal die Stunde wird wieder aktualisiert. Für DCF: Wenn tagsüber schlechter Empfang herrscht (z.B. Schaltnetzteil in der Nähe), dann die RTC nachts nachstellen. Ist der DCF-Empfang tagsüber schlecht, dann die Zeit mal von der RTC holen.

Die RTC würde ich nie kontinuierlich auslesen. Die DS1307 würde dann sogar evtl. arg nachgehen. Zeitfunktionen kommen bei mir ins Sectic. Werden also maximal einmal pro Sekunde ausgeführt. In dem Sub Sectic werden auch Timer abgearbeitet.
Vereinfachtes Prinzip mal eben schnell aus dem Kopf:
Code:
Wenn Minutealt <> Minute dann ' So umgeht man, dass man die Sekunde 0 wegen evtl. Zeiteinstellung verpasst...
Minutealt=Minute
Wenn Weckeraktiv>0 dann Weckeraktiv = Weckeraktiv -1
Wenn Weckzeit=Uhrzeit, dann Variable für Weckeraktiv auf 60 Minuten stellen (habe ein Internetradio gebaut).
Ist Weckeraktiv>0 dann Radio einschalten, wenn es noch nicht an ist.
Ist Weckeraktiv=0 dann Radio ausschalten
Das geht auch mit Sekunden.