Информатика и технология программирования


Средства обработки прерываний в Си - часть 3



} // прерывания


void main()
{
TIMOLD = getvect(TIMVEC); // Сохранение старого вектора


setvect(TIMVEC,TIMINT); // Установка нового вектора


// на функцию TIMINT


setvect(TIMVEC, TIMOLD); // Восстановление старого вектора


}

В процессе обработки прерывания по цепочке имеется один нюанс. Дело в том, что старый обработчик прерывания, доступный по вектору, ожидает, что его выполнение начнется после выполнения процессором входа в прерывание. Поэтому транслятор при вызове функции по указателю - вектору прерывания - эмулирует это прерывание, благо для этого необходимо только дополнительно загрузить в стек регистр флагов процессора.


(*TIMOLD)(); // Эмуляция прерывания по старому вектору


// Сохранение флагов в стеке и вызов функции


// по указателю




Начало  Назад  Вперед



Книжный магазин