Кстати EWAVR 8.10 при высокой оптимизации генерит худший код, чем
старый 7.30
315 WriteTimer (1000); // зарядить обратный таймер на 1000 мс
8.10
\ 00000000 94F8 CLI \ 00000002 EE08 LDI R16, 232 \ 00000004 2E40 MOV R4, R16 \ 00000006 E003 LDI R16, 3 \ 00000008 2E50 MOV R5, R16 \ 0000000A 9478 SEI
7.30
\ 00000000 94F8 CLI
\ 00000002 EE08 LDI R16, 232
\ 00000004 E013 LDI R17, 3
\ 00000006 0128 MOVW R5:R4, R17:R16
\ 00000008 9478 SEI
319 eeTestTime = (unsigned int) 1000 - uiReadTimer();
8.10 \ 0000000C 94F8 CLI \ 0000000E 0192 MOVW R19:R18, R5:R4 \ 00000010 9478 SEI \ 00000012 E000 LDI R16, 0 \ 00000014 2711 CLR R17 \ 00000016 E141 LDI R20, 17 \ 00000018 .... RCALL __eeput16_8
7.30
\ 00000010 94F8 CLI
\ 00000012 9478 SEI
\ 00000014 2700 CLR R16
\ 00000016 2711 CLR R17
\ 00000018 .... LDI R20, eeTestTime
\ 0000001A .... RCALL __eeput16_8
Старый даже об чтение счётчика мараться не стал - все повыкидывал к херам! :))))