Sorry, hatte die Hälfte des Code vergessen

Anmerkungen stehen im Code

main.c
Code:
#include <avr/io.h>
#include <avr/interrupt.h>

#include "timer.h"

// ISR für Timer1-OutCompare1A-IRQ
// Wird IRQS_PER_SECOND mal pro Sekunde aufgerufen
SIGNAL (SIG_OUTPUT_COMPARE1A)
{
    // count the number of IRQs, starting with 0.
    static uint8_t irq_num_10ms;

    // 10 Milli-Sekunden sind voll.
    if (++irq_num_10ms == IRQS_PER_10MS)
    {
        irq_num_10ms = 0;

        // Countdown-Timer erniedrigen
        job_timer_10ms ();
    }
}

// our entry point after RESET and initialization of globals
int main (void)
{
    // init Timer1 to make IRQs
    init_timer1();

    // enable IRQs globally
    sei();

    // main loop
    // Die main-Schleife realisiert einen Blinker:
    // Am Anfang jeder Stunde wird 1 Minute lang mit 1/2 Hz geblinkt.
    // main ist frei von Warteschleife(n)! :-)
    // LED_AN; und LED_AUS; sind NICHT definiert und nur zur Verdeutlichung
    while (1)
    {
        // in countdown_t (time.h) folgende Komponenten hinzufügen:
        // .min.stundenzaehler // macht Stunden
        // .sek.blinken        // macht die gesamte blinkdauer
        // .ms10.blink_led     // macht die Blinkfrequenz

        if (0 == count.min.stundenzaehler)
        {
            // Stundenzähler ist abgelaufen:
            // neu aufziehen
            // min.* wird im Minutentakt erniedrigt
            // und eine Stunde hat 60 Minuten
            // (Auflösung 1 Sekunde)
            count.min.stundenzaehler = 60;

            // Mach was...

            // blinken auf 1 Minute aufziehen
            // (Auflösung 10ms)
            count.sek.blinken = 60;
        }

        // Am Anfang jeder Stunde wird 1 Minute lang im Sekundentakt
        // (also mit 1/2 Hz) geblinkt
        if (count.sek.blinken)
        {
            // Es wird geblinkt
            // Falls blink_led abgelaufen ist:
            // wieder aufziehen auf 2 Sekunden (200*10ms)
            if (0 == count.ms10.blink_led)
                count.ms10.blink_led = 200;

            // Das eigentliche Blinken
            // 1. Sekunde --> LED ist an
            // 2. Sekunde --> LED ist aus
            if (count.ms10.blink_led <= 100)
                LED_AUS;
            else
                LED_AN;
        }
        else
        {
            // Falls die LED noch an ist
            LED_AUS;
        }
    } // main loop

    // we will never come here. No return needed (would be dead anyway).
}