Цитата(smk @ Feb 28 2007, 09:22)

Нигде не написано. Просто компилятор компилирует код программы так, что для работы с таймером требуется 16 тактов.
Например:
TCNT0 = 0xF9;
while (1)
{
if (TIFR0 & 0x02)
{
TCNT0 = 0xF9;
TIFR0 = 0x02;
PORTB.0 = !PORTB.0;
}
}
попробуйте кому интересно.
Да что тут предлагать-то.
1. У mega48 (как и у всех остальных мег) у каждого таймера есть режим CTC (Clear To Compare), при котором счетчик сам обнуляется, когда досчитает до заданного числа (строка TCNT0 = 0xF9; уходит).
2. В этом же режиме можно инвертировать определенные выходы (обычно по два на каждый таймер).
Попробуйте откомпилить приведенный вами код для таймера2, увидите 32 цикла процессора вместо ожидаемых 16 (не точно 32 но точно больше 16), угадайте почему?