Принципы использования прерываний
Принципы использования прерываний
Последовательный асинхронный адаптер можно запрограммировать таким образом, что всякий раз, когда он примет или передаст очередной байт, будет выработано соответствующее прерывание.
Прерывания могут вырабатываться асинхронным адаптером в следующих случаях:
- изменилось состояние линии приемника: произошло переполнение приемника, произошла ошибка четности или синхронизации, линия перешла в состояние BREAK;
- данные приняты и доступны для чтения через регистр данных;
- регистр передатчика пуст;
- изменилось состояние модема: изменилось состояние линий CTS, RI, DCD, DSR.
Вы можете отдельно запрещать или разрешать эти прерывания. Для этого необходимо установить соответствующие биты в регистре управления прерываниями.
Как приходит прерывание от COM-порта? Как мы указывали ранее, каждому COM-порту соответствует, кроме базового адреса его регистров, линия IRQ (см. главы "Последовательный асинхронный адаптер" и "COM-порт и номера IRQ"):
COM-порт | IRQ | Номер прерывания |
COM1 | IRQ4 | INT0Ch |
COM2 | IRQ3 | INT 0Bh |
COM3 | IRQ4 | INT 0Ch |
COM4 | IRQ3 | INT 0Bh |
Заметим, что в данной таблице представлен только один возможный вариант соответствия номеру COM-порта линии IRQ. Некоторые платы асинхронных адаптеров и некоторые внутренние модемы имеют отдельно перемычки для выбора номера COM-порта (адреса базового регистра) и номера линии IRQ.
Что представляет из себя обработчик прерываний асинхронного адаптера? После вызова обработчика прерываний он должен: