![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 109110111112113114115 ... 159
яблица 10.16 Региар соаояния линии последовательного порта ПК
Прерывания Для разрешения прерываний последовательных портов СОМ1 / COM3 (с вектором ОхООС) может применяться следующая программа: Setint ( ОхОС, SerlntHdlr ), Указание программы обработки Dummy = inp ( RxHoldingRegister ); Отмена всех отложенных прерываний. outp ( IntMaskRegister, inp(IntMaskRegister ) & OxOFB ): Разрешение прерываний C0M1/C0M3 в контроллере. outp ( InterruptEnableregister, 0x003 ); Запрос прерываний по событиям «передающий буфер пуст» и «приемный буфер полон». , outp (ModemControlRegister, inp( ModemControlRegister ) 0ut2); Разрешение прерываний от 8250.
Когда аппаратура запрашивает прерывание, управление переходит к вспомогательной программе: SerlntHdlr Программа обработки прерываний последовательного порта Когда порт, запрашивающий прерывание, определен: switch ( InterruptlDRegister ) { case 4 InString[ 1++ ] = RxHoldingRegister Break case 2 TxHoldingRegister = OutString []++], break, default Dummy = RxHoldingRegister, } InterruptControlRegister = EOI returnFromlnterrupt Обработка запроса прерывания Передающий буфер пуст Посылка следующего символа Другие типы прерываний Очистка принимаемых данных Конец switch Сброс контроллера прерываний Выход из прерывания Функции прерывания 14h BIOS интерфейса RS-232 Приложение может использовать программное прерывание I4h BIOS для реализации функций последовательного порта. Перечень функций представлен в табл. 10.18. Тоблица 10.18 функции прерывания 14h BIOS Функция Выдает Принимает Примечания Р1нициализация порта АН = ООП AL = параметры инициализации DX = номер порта АН = соаояние линии AL = соаояние модема Инициализирует последовательный порт Г)ередача символа АН = Olh AL = символ DX = порт АН = состояние линии AL = соаояние модема Отправляет символ после уаановки связи с модемом Получение символа AH = 02h DX = номер порта АН = аатус линии AL = символ Ожидает символ, который должен поаупить после уаановки связи с модемом Получение соаояния АН = ОЗП DX = номер порта АН = аатус линии AL = аатус модема Возвращает текущее соаояние порта Расширенная инициализация порта АН = 04h AL = О - при отсутавии прерывания, 1 - при отправке прерывания ВН = режим контроля по четноаи 0 - отсутавие, 1 - по нечетноаи, 2 - по четноаи, 3 - stick нечетноаь, 4 - stick-четноаь BL = стоповый бит 0 - один такт, 1 - два такта СН = длина слова 0-5 бит, 1 - 6 бит, 2-7 бит, 3 - 8 бит CL = скороаь передачи данных 0 -110 бит/с, 1 - 150 бит/с, 2 - 300 бит/с, 3 - 600 бит/с, 4 - 1200 бит/с, 5 - 2400 бит/с, 6 - 4800 бит/с, 7 - 9600 бит/с, 8 -19200 бит/с DX = номер порта АН = соаояние линии AL = соаояние модема Речь идет о более полной инициализации последовательного порта Чтение региара управления модемом АН = 05h AL = 0 DX = номер порта BL = региар управления модемом Выдает содержимое региара управления модемом 0 ... 109110111112113114115 ... 159 |