Да, если Компилятор не знает, что там записано (функцию записи
закомментировать), то всё становится как надо: 311 // WriteTimer (1000); // зарядить обратный таймер на 1000 мс
313 // Бла-бла-бла ....
316 eeTestTime = 1000 - uiReadTimer();
\ 00000000 94F8 CLI
\ 00000002 0192 MOVW R19:R18, R5:R4
\ 00000004 9478 SEI
\ 00000006 EE08 LDI R16, 232
\ 00000008 E013 LDI R17, 3
\ 0000000A 1904 SUB R16, R4
\ 0000000C 0915 SBC R17, R5
\ 0000000E E141 LDI R20, 17
\ 00000010 .... RCALL __eeput16_8
Но между загрузкой таймера, и его чтением, проходит время. Почему компилятор считает, что значение регистровой пары не изменилось? и как ему об этом сказать?
Исходники не перекомпилировал.
Функция чтения таймера:
unsigned int uiReadTimer ()
{
unsigned int uitemp;
__disable_interrupt();
uitemp = uiCommonTimer;
__enable_interrupt();
return uitemp;
}