Программирование модемов

Принципы использования прерываний



Принципы использования прерываний

Последовательный асинхронный адаптер можно запрограммировать таким образом, что всякий раз, когда он примет или передаст очередной байт, будет выработано соответствующее прерывание.

Прерывания могут вырабатываться асинхронным адаптером в следующих случаях:

  • изменилось состояние линии приемника: произошло переполнение приемника, произошла ошибка четности или синхронизации, линия перешла в состояние BREAK;
  • данные приняты и доступны для чтения через регистр данных;
  • регистр передатчика пуст;
  • изменилось состояние модема: изменилось состояние линий CTS, RI, DCD, DSR.

Вы можете отдельно запрещать или разрешать эти прерывания. Для этого необходимо установить соответствующие биты в регистре управления прерываниями.

Как приходит прерывание от COM-порта? Как мы указывали ранее, каждому COM-порту соответствует, кроме базового адреса его регистров, линия IRQ (см. главы "Последовательный асинхронный адаптер" и "COM-порт и номера IRQ"):

COM-портIRQНомер прерывания
COM1IRQ4INT0Ch
COM2IRQ3INT 0Bh
COM3IRQ4INT 0Ch
COM4IRQ3INT 0Bh

Заметим, что в данной таблице представлен только один возможный вариант соответствия номеру COM-порта линии IRQ. Некоторые платы асинхронных адаптеров и некоторые внутренние модемы имеют отдельно перемычки для выбора номера COM-порта (адреса базового регистра) и номера линии IRQ.

Что представляет из себя обработчик прерываний асинхронного адаптера? После вызова обработчика прерываний он должен:



Содержание раздела