Цитата(Dog Pawlowa @ Jun 8 2007, 15:39)

Если переменная используется ТОЛЬКО в прерывании, то volatile на самом то деле и не нужно, правда?
Если только в одном невложенном прерывании - то не нужно.
Если только в основной программе - тоже не нужно.
Если и в основной программе и в прерывании - необходимо.
Если в двух вложенных прерываниях - необходимо.
Короче говоря, volatile надо ставить на те переменные, которые могут изменяться асинхронно. Или в прерываниях, или по DMA, или ещё как-нибудь (напрммер, регистры внешних устройств).
Такие переменные компилятор не кеширует в регистрах процессора, а берет всегда свежие данные из ОЗУ.