[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
необходимо сделать менеджер прерываний, проверяющий флаги, и в зависимости от их значений запускать соответствующие процедуры.
собственно это я сделал, при в входе в прерывание обрабатываю флаги и вызываю функцию на асме с одной командой RETI. Теперь это прерывание можно запускать еще раз и выполнять например более приоритетные задачи.
Проблема в том, что после окончания процедуры необходимо снова запустить менеджер для проверки не появился ли новый флаг. То есть нужно запустить прерывание из этого же прерывания. вариант
EA = 0;
IE1 = 1; // запуск прерывания
EA = 0;
в последних строках функции не подходит, т.к. С вставляет в конце выборку регистров из стека.
Что можно сделать?
есть ли другие варианты менеджера?
Может быть где-то можно прочитать об этом?
E-mail: info@telesys.ru