> Wenn ich jetzt aber einen 24h Timer mithilfe von mehreren Registern in
> der ISR programmiert habe, dann kann ich doch mein Hauptprogramm 24h
> lang nicht mehr ansprechen oder?
Nein, ist falsches Verständnis. Ich geh jetzt mal davon aus, dass du
alle 24h eine "Nachricht" haben willst, dass eben die 24h rum sind. Also
machst du folgendes:
Du konfigurierst deinen Interrupt auf sagen wir beispielsweise 10ms oder
100ms (geht auch exakt mit ungeraden Quarzfrequenzen(!)). Dann nimmst du
vier 1-Byte Variablen, welche die 10ms, die Sekunden, die Minuten und
die Stunden darstellen. Der Interrupt inkrementiert bei jedem Durchlauf
die 10ms-Variable. Ist sie gleich 100, wird sie auf 0 gelöscht und dafür
die Sekunden inkrementiert. Und so gehts dann weiter, bis deine
Stunden-Variable den Wert 24 hat. Dann wird alles gelöscht und es geht
von vorne los. Bei Erreichen von 24 für die Stunden setzt du zusätzlich
eine 1-Bit Variable, welche im Hauptprogramm abgefragt wird (und dort
auch wieder gelöscht wird).
Das heisst insgesamt, dass der Interrupt nur alle 10ms kommt, die
Berechnungen durchführt und wieder verlassen wird, d.h. das
Hauptprogramm kommt immer dazwischen zum Zuge.
Mit der o.g. Implementierung hast du auch gleichzeitig eine RTC
programmiert, wenn du die Zugriffe auf die Interrupt-Variablen richtig
steuerst, kannst du eine sehr exakte Uhr programmieren :)
Ich hoffe, ich konnte das einigermaßen verständlich rüberbringen =)
Ralf