Михаил Гук - Аппаратные интерфейсы ПК. Энциклопедия
- Название:Аппаратные интерфейсы ПК. Энциклопедия
- Автор:
- Жанр:
- Издательство:Издательский дом «Питер»
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-180-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Михаил Гук - Аппаратные интерфейсы ПК. Энциклопедия краткое содержание
Книга посвящена аппаратным интерфейсам, использующимся в современных персональных компьютерах и окружающих их устройствах. В ней подробно рассмотрены универсальные внешние интерфейсы, специализированные интерфейсы периферийных устройств, интерфейсы устройств хранения данных, электронной памяти, шины расширения, аудио и видеоинтерфейсы, беспроводные интерфейсы, коммуникационные интерфейсы, вспомогательные последовательные интерфейсы. Сведения по интерфейсам включают состав, описание сигналов и их расположение на разъемах, временные диаграммы, регистровые модели интерфейсных адаптеров, способы использования в самостоятельно разрабатываемых устройствах. Книга адресована широкому кругу специалистов, связанных с эксплуатацией ПК, а также разработчикам аппаратных средств компьютеризированной аппаратуры и их программной поддержки.
Аппаратные интерфейсы ПК. Энциклопедия - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
♦ 03h — опрос состояния модема и линии (чтение регистров МSR
и LSR
). Эту гарантированно быструю функцию обычно вызывают перед функциями ввода-вывода во избежание риска ожидания тайм-аута.
При вызове Int 14h
номер функции задается в регистре АН
, номер порта (0–3) — в регистре DX
(0 — COM1
, 1 — COM2
…). При возврате из функций 0, 1 и 3 регистр АН
содержит байт состояния линии (регистр LSR), AL
— байт состояния модема (MSR). При возврате из функции 2 нулевое значение бита 7 регистра АН
указывает на наличие принятого символа в регистре AL
; ненулевое значение бита 7 — на ошибку приема, которую можно уточнить функцией 3.
Байт состояния линии (регистр АН
) имеет следующий формат:
♦ бит 7 — ошибка тайм-аута (после вызова функции 2 — признак любой ошибки);
♦ бит 6 — регистр сдвига передатчика пуст (пауза передачи);
♦ бит 5 — промежуточный регистр передатчика пуст (готов принять символ для передачи);
♦ бит 4 — обнаружен обрыв линии;
♦ бит 3 — ошибка кадра (отсутствие стоп-бита);
♦ бит 2 — ошибка паритета принятого символа;
♦ бит 1 — переполнение (потеря символа);
♦ бит 0 — регистр данных содержит принятый символ.
Байт состояния модема (регистр AL
при возврате из функций 0, 1, 3) имеет следующий формат:
♦ бит 7 — состояние линии DCD
;
♦ бит 6 — состояние линии RI
;
♦ бит 5 — состояние линии DSR
;
♦ бит 4 — состояние линии CTS
;
♦ бит 3 — изменение состояния DCD
;
♦ бит 2 — изменение огибающей RI
;
♦ бит 1 — изменение состояния DSR
;
♦ бит 0 — изменение состояния CTS
.
При инициализации порта биты регистра AL
имеют следующее назначение:
♦ биты [7:5] — скорость обмена:
• 000=110; 100=1200; 001=150; 101=2400;
• 010=300; 110=4800; 011=600; 111=9600 бит/с;
♦ биты [4:3] — контроль паритета:
• 01 — число единиц нечетное;
• 11 — четное;
• 0 и 10 — без контроля;
♦ бит 2 — количество стоп-бит: 0–1 бит, 1–2 бита (на скорости 110 бит/с — 1,5 стоп-бит);
♦ биты [1:0] — длина посылки: 00 — 5 бит, 01 — 6 бит, 10 — 7 бит, 11 — 8 бит.
В процессе начального тестирования POST BIOS проверяет наличие последовательных портов (регистров UART 8250 или совместимых) по стандартным адресам и помещает базовые адреса обнаруженных портов в ячейки BIOS Data Area
0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса портов с логическими именами COM1
- СОМ4
. Нулевое значение адреса является признаком отсутствия порта с данным номером. В ячейки 0:047С, 047D, 047Е, 047F заносятся константы, задающие тайм-аут для портов.
Обнаруженные порты инициализируются на скорость обмена 2400 бит/с, 7 бит данных с контролем на четность (even), 1 стоп-бит. Управляющие сигналы интерфейса DTR
и RTS
переводятся в исходное состояние («выключено» — положительное напряжение).
12.8.5. Int 17h — поддержка принтера
Сервисы BIOS Int 17h
: обеспечивают инициализацию, вывод байта данных и опрос состояния принтера, подключенного к LPT-порту. При вызове функция задается в регистре АН
, номер LPT-порта — в регистре DX.
♦ АН
= 00h — вывод байта из регистра AL
по протоколу Centronics (без аппаратных прерываний). Данные помещаются в выходной регистр, и, дождавшись готовности принтера (снятия сигнала Busy
), формируется строб.
♦ АН
= 01h — инициализация интерфейса и принтера (установка исходных уровней управляющих сигналов, формирование импульса Init#
, запрет аппаратных прерываний и переключение на вывод двунаправленного интерфейса).
♦ АН
= 02h — опрос состояния принтера (чтение регистра состояния порта).
При возврате регистр АН
содержит байт состояния , который собирается из бит регистра состояния SR[7:3]
и программно формируемого флага тайм-аута. Биты 6 и 3 относительно байта, считанного из регистра состояния, инвертированы. Назначение бит байта состояния:
♦ бит 7 — не занято (сигнал Busy
); нулевое значение означает, что принтер занят (буфер полон или состояние Off-Line, или ошибка);
♦ бит 6 — подтверждение (сигнал Ack#
); единичное значение означает, что принтер подключен;
♦ бит 5 — конец бумаги (сигнал PaperEnd
);
♦ бит 4 — принтер готов (сигнал Select
); нулевое значение означает, что принтер в состоянии Off-Line;
♦ бит 3 — ошибка принтера (сигнал Error#
); единичное значение соответствует ошибке;
♦ биты 2:1=00 (не используются);
♦ бит 0 — флаг тайм-аута, устанавливается при неудачной попытке вывода символа, если сигнал Busy
не снимается в течение времени, определенного для данного порта в ячейках тайм-аута (в BIOS Data Area); в этом случае согласно протоколу Centronics строб данных не вырабатывается.
Перехват прерывания Int 17h
является удобным способом внедрения собственных драйверов принтера. Потребность в них может возникать при подключении к порту принтера с интерфейсом ИРПР или необходимости перекодировки символов. Если разрабатываемый драйвер предназначен не только для перекодировки, но и изменения протокола (через Int 17h
можно организовать вывод через LPT-порт по протоколу ИРПР и даже через СОМ-порт), следует внимательно отнестись к битам возвращаемого байта состояния. При их неправильном формировании попытки вывода на печать могут приводить к ошибочным сообщениям.
12.8.6. Int 1Ah и Int 15h — поддержка таймеров
Сервисы BIOS Int 1Ah
позволяют считывать и модифицировать значения системного таймера, даты и времени , а также установки будильника часов реального времени CMOS RTC. Перечисленные ниже номера функций указываются при вызове в регистре АН
.
1. АН
=0 — чтение системного таймера (двойного слова по адресу 40:006Eh в BIOS Data Area, инкрементируемого по прерываниям от канала 0 счетчика- таймера 8253/8254 примерно раз в 55 мс. Таймер обнуляется при выполнении теста POST после аппаратного сброса). Возвращает значение таймера, в СХ
— старшую часть, в DX
— младшую. AL
=0, если за последние 24 часа не было переполнения таймера. В современных версиях сброс AL
возвращает счетчик переполнений таймера, хранящийся в ячейке 40:0070h (в старых версиях это был флаг).
2. АН
=1 — установка системного таймера ( СХ
— старшая часть, в DX
— младшая) и сброс флага (счетчика) переполнения таймера в ячейке 40:0070h. В случае ошибки устанавливается флаг CF
=1.
3. АН
=2 — чтение времени из RTC. Возвращает в упакованном BCD-формате час (в регистре СН
), минуту ( CL
), секунду ( DH
) и признак коррекции летнего/зимнего времени ( DL
=1 — коррекция используется, DL
=0 — нет). Признаком успешной операции является флаг CF
=0. Во избежание ошибок некоторых BIOS при вызове флаг CF
должен быть сброшен.
Интервал:
Закладка: