Я думаю тут не из-за этого, но можно и так.
Код
if (++hour[h_sek]>=60)
Инкремент после был бы:
Код
if (hour[h_sek]++==60)
На счет volatile, я смотрю листинг. Привык к WinAVR-20060421. Там обычно не прокатывает вот такое
Код
ISR(){
clock_--;
}
clock_=60;
while(clock_)
В функции часов, есть одно место "не очень" коррекция хода в час,
Код
if (++hour[h_min]==60)
{
//cli();
if ( setup.corr_flag&BIT(fl_corr_znak_pl) )//корекция часов
clock_+=setup.correction;//для убыстрения
else
clock_= 0x00-setup.correction;
//sei();
Но это раньше работало, здесь я тоже особых проблем не вижу.
Ладно, не буду голову забивать, буду разбираться в симуляторе.