Цитата(Dog Pawlowa @ Jun 8 2007, 11:02)

Оказывается, что компилятор выкидывает присвоение переменной.
Не вижу никакого выкидывания.
pump_state кешируется в R14. В зависимости от missing_pulses в R14 пишется либо 0 (001F94), либо 1 (001F98), после чего R14 сохраняется в pump_state (001F9A). Просто компилятор чуть-чуть не попал с комментариями - это простительно на высоких уровнях оптимизации.
P.S. Основной источник глюков при использовании прерываний - программист, не знающий про ключевое слово
volatile.