На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 8 / Уборка перед закрытием магазина Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Уборка перед закрытием магазина

После того, как Ваша прикладная программа перестает нуждаться в дальнейшем последовательном вводе/выводе, необходимо восстановить порт в его обычное состояние. Восстановление включает в себя установку всех битов регистра разрешения прерываний порта в ноль и выключение всех сигналов управления модемом. Затем контроллер 8259A должен быть запрограммирован для прекращения приема прерываний последовательного порта. В заключение, вектор последовательного прерывания необходимо сбросить в начальное значение, которое было сохранено при инициализации ввода/вывода. Вот как это реализуется в Microsoft C 5.0:


             int intmask;
             .
             .
             .
         /* Запретить прерывания на время очистки */
             _disable();
         /* Сначала сбросить регистр разрешения прерываний порта */
             outp(IER,IEROFF);
         /* Выключить все биты регистра управления модемом */
             outp(MCR,MCROFF);

         /* Затем запретить распознавание контроллером 8259A прерываний
            последовательного порта */
             intmask = inp(P8259_1) | int_disable_mask;
             outp(P8259_1, intmask);

         /* Восстановить первоначальный вектор прерываний */
             _dos_setvect(int_number, old_handler);

         /* Снова разрешить прерывания */
             _enable();

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz