
#include <mega8.h>

// Это обработчик прерывания
// прерывание возникает, когда таймер1 досчитает до значения,
// которое находится в регистре сравнения OCR1A 
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Сюда Вы будете попадать каждую секунду, если в
// регистр OCR1A будет загружено значение 15625
// Здесь и делайте со своими переменными, что хотите

}

// Здесь Вы должны объявить свои глобальные переменные,
// которые будете использовать в обработчике прерывания


void main(void)
{

// инициализация таймера 1:
// хотим, чтобы был режим Clear Timer on Compare Match (CTC)
// прескалер выбираем равным 64, чтобы частота на входе таймера
// была 1000000/64 = 15625 Гц.
TCCR1A=0x00;
TCCR1B=0x09;

// загружаем регистр сравнения
OCR1A = 15625; // таймер будет считать до 15625, затем будет
// прерывание, как раз каждую секунду 

// разрешаем прерывания по совпадению с регистром сравнения
TIMSK=0x10;

// разрешаем прерывания вообще
#asm("sei")

while (1)
      {
      // это тот самый бесконечный цикл, который Вы
      // хотите прерывать каждую секунду

      };
}
