Davon abgesehen springt mir noch eine andere Sache ins Auge:
TIFR |= (0 << ICF1) | (0 << TOV1);
TIMSK |= (0 << TICIE1) | (0 << TOIE1);
Diese beiden Zeilen sind NOPs, die tun rein gar nichts, schon gar nicht halten sie den Timer an.
Stimmt, man kann ja mit OR keine 1 löschen.
Code:
TIMSK ^= (1 << TICIE1);
TIMSK ^= (1 << TOIE1);
So müsste sich der Timer doch beenden lassen.

Und auch in den Blöcken dieser Form:
Zeit.Stunde =
ZeitBits[28]*1+
ZeitBits[29]*2+
ZeitBits[30]*4+
ZeitBits[31]*8+
ZeitBits[32]*10+
ZeitBits[33]*20;
steckt ein kapitaler Denkfehler.
Was stimmt den daran nicht? Ich habe mir es so gedacht:
Wenn das Bit an der entsprechenden Position 1 ist, so wird das Produkt 1*X zu Zeit.Stunde addiert.

Danke für eure Hilfe
mfg _R2D2