[an error occurred while processing this directive] [an error occurred while processing this directive]
как реализовать менеджер прерываний в IAR С 8051
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено kest 07 февраля 2002 г. 18:53

необходимо сделать менеджер прерываний, проверяющий флаги, и в зависимости от их значений запускать соответствующие процедуры.
собственно это я сделал, при в входе в прерывание обрабатываю флаги и вызываю функцию на асме с одной командой RETI. Теперь это прерывание можно запускать еще раз и выполнять например более приоритетные задачи.
Проблема в том, что после окончания процедуры необходимо снова запустить менеджер для проверки не появился ли новый флаг. То есть нужно запустить прерывание из этого же прерывания. вариант
EA = 0;
IE1 = 1; // запуск прерывания
EA = 0;
в последних строках функции не подходит, т.к. С вставляет в конце выборку регистров из стека.
Что можно сделать?
есть ли другие варианты менеджера?
Может быть где-то можно прочитать об этом?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru