Ксения (23.04.2005 00:54, просмотров: 3473)
Зачем сохраняют состояние в обработчике прерывания? Компилирование AVR Compiler любого обработчика прерывания
__interrupt void TIMER1_OVF( void ) { ... }
приводит в общем случае в следующему коду:
TIMER1_OVF:
ST -Y,R17 // сохраняет старое значение R17 в стеке
IN R17,0x3F // копирует РЕГИСТР СОСТОЯНИЯ в R17
...
OUT 0x3F,R17 // копирует R17 в РЕГИСТР СОСТОЯНИЯ
LD R17,Y+ // возвращает R17 старое значение
RETI // возврат из прерываняи
Вопросы: Для чего нужны эти манипуляции с сохранением РЕГИСТРА СОСТОЯНИЯ? Являются ли они обязательными? Что может случиться плохого, если этого не делать?