|
EA включен постоянно.
Просто в критичные моменты выполнения программы (они длительные) выключить все прерывания и потом включить - нельзя мне :) Дело в том, что эти самые притичные моменты программы могут длиться несколько секунд и прерывание я могу просто пропустить! (у меня два прерывания: одно внешнее и второе от последовательного порта).
Какое из прерываний произошло я определяю как раз поллингом (RI, IE1). Вопрос заключается в том, как мне сейчас все-таки выполнить подпрограмму обработки прерывания, которое произошло, допустим, 2 секунды назад и моя программа в это время не могла на прерывание отвлечься.
Видимо придётся делать так:
все прерывания запрещаются
когда мы можем запустить подпрограмму обработки, мы делаем поллинг наших флагов и вызываем необходимую подпрограмму, только уже с RET а не с RETI. И всё. Как такового прерывания у нас уже нет и векторы нам не нужны :)
E-mail: info@telesys.ru