Цитата(smk @ Jan 11 2008, 23:48)

Теперь другая непонятная штука. Не выполняется оператор i++; Он просто пропускается симулятором. Почему?
unsigned char i;
while (i<240)
{
while(TIFR1 & (1<<TOV1))
{
TCNT1H = 0xF8;
TCNT1L = 0x5F;
i++;
PORTA^=0b00000100;
TIFR1 |= (1<<TOV1);
}
}
Буду благодарен за подсказку.
Э-э, а чему равно начальное значение i ?
PS. Пропускаться может по такой причине: переменная i у Вас во внутреннем цикле явно не используется, поэтому она была "оптимизирована" компилятором.
Не разобрался, сперва для чего нужно i. Для того, чтобы не оптимизилось, операцию нужно сделать volatile.
Самонадеянность слепа. Сомнения - спутник разума. (с)