Параллельный интерфейс.
Введение.
Стандартные интерфейсы IBM компьютера Сentronics и RS232B.
Лабораторная работа №1.
Приложения.
Цель работы:
1. Ознакомиться с со стандартными интерфейсами IBM компьютера Сentronics и RS232B.
2. Создать программу на языке Паскаль, управляющую учебным стендом и принтером по стандарту Centronics.
Присоединение внешних устройств к компьютеру типа IBM возможно:
§ через стандартные параллельный или последовательный (серийный) интерфейсы (порты),
§ через адаптер, непосредственно подсоединенный к системной шине ЭМВ через разъем (слот) на материнской плате.
В этой лабораторной работе рассматриваются стандартные интерфейсы IBM компьютера.
Параллельные интерфейсы отличаются высокой скоростью обмена, но коротким кабелем и низкой помехозащищенностью. Через параллельный интерфейс, имеющий 25-штырько-вый разъем, к компьютеру обычно подсоединен принтер. Этот стандарт называется Centronics, а его отечественный аналог - ИРПР-М. Ниже приведено распределение сигналов по контактам в IBM-комьютере.
Контакт | Сигнал | Направление сигнала | |
strob | Строб | ист -> пр | |
date 1 | Данные | ист -> пр | |
... | …… | Данные | ист -> пр |
... | …… | Данные | ист -> пр |
date8 | Данные | ист -> пр | |
acknlg | Подтверждение | пр -> ист | |
busy | Занят | пр -> ист | |
pe | конец бумаги | пр -> ист | |
select out | готовность приемника | пр -> ист | |
auto feed | авт. перевод бумаги | ист-> пр | |
error | Ошибка | пр -> ист | |
init | Сброс | ист ->пр | |
select in | Выбор | ист ->пр | |
19-25 | ground | Земля |
Здесь подчеркнутыми показаны инвертированные сигналы (напр. error), т.е. сигнал активен, когда на линии низкое напряжение (логический "ноль"). Уровни напряжения сигнала соответствуют стандарту ТТЛ-схем: логическая "1" = 2.4-5.25 В, логический "0" = 0-0.5 В.
Процесс установления связи двух устройств в стандарте Centronics происходит примерно так.
1. Компьютер (источник) проверяет нет ли сигнала busyнаконтакте 11, выставляет данные на контактах 2-9 и подает сигнал strobна контакт 1.
2. Принтер (приемник) по появлению сигнала строб выставляет сигнал busy. После обработки информации он снимает busyи подтверждает прием данных сигналом acknlg.
Эпюры напряжений при работе интерфейса Centronics.
Остальные сигналы менее значимы и могут не использоваться. В случае конца бумаги (pe) или ошибки (error) принтер все равно поднимет сигнал на линии busy.Инициализация принтера может быть произведена не только управляющим сигналом init,но и программно.
За один раз передается сразу 8-бит информации (байт), что позволяет передать один из 255 символов таблицы ASCII, которая обычно "прошита" в ПЗУ принтера.
При автоматизации физического эксперимента параллельный интерфейс может использоваться для ввода/вывода цифровой информации по 12 линиям от компьютера (данные: 8 бит + управление: 4 бита) и по 4 линиям к компьютеру (состояние 4 бита). Каждая выходная линия, при соответствующем согласовании, может быть использована для управления состоянием аппаратуры типа "включено-выключено": запуск генератора, опускание пера, открытие шторки и т.д.
Простейший цифро-аналоговый преобразователь (ЦАП), показанный на рис.1, может использоваться для вывода аналоговой информации, например на самописец, осциллограф, динамик и др. Входные линии параллельного порта можно использовать для ввода состояния клавиш, наличия высокого/низкого уровня сигнала и т.д. в ваших приборах. Например, можно программно легко реализовать простейший счетчик импульсов или частотомер. Если использовать генератор, у которого частота импульсов зависит от емкости (или сопротивления), то можно на его базе изготовить R или C измеритель.
Рис. 1 Простейший ЦАП на основе регистра (параллельного порта).
Обратите внимание на тот факт, что некоторые линии управления и состояние - инвертированы.
Для программирования данного интерфейса служат три регистра по 8 бит каждый с шестнадцатеричным адресами (в адресном пространстве внешних устройств) для первого параллельного интерфейса: 378h - данные, 379h - состояние, 37Ah - управление. Т.е. параллельный порт занимает в адресном пространстве три байта.
Ниже приведено назначение битов регистров.
Состояние (379) | Управление (37A) | ||
Busy (1- занят) | 7-5 | не используется | |
Acknlg (0- подтверждение приема) | Irq (0-прерывание запрещено) | ||
Pe (1- нет бумаги) | slct in (0-отмена выбора) | ||
Slct out (1- выбран) | Init (0- инициализация) | ||
Error (0- ошибка) | auto feed (автоперевод строки) | ||
2-0 | не используется | strob (1- вывод байта) |
В системе MS-DOS устройствам параллельных портов ввода-вывода присваивается логические имена LPT1 (PRN), LPT2 и т.д. Работу с ними обеспечивает прерывание BIOS (basic input/output system) int 17h, которое имеет 3 функции:
0 - символ вывода на печать, 1 - инициализация порта, 2- получение слова состояния. При этом номер функции заносится в регистр процессора AH, код передаваемого символа в AL, а номер порта (0-2) в DX. После вызова прерывания int 17 в AX окажется слово состояния. В Турбо Паскале в библиотеке DOS есть тип Registers и процедура Intr(n,registers), которые могут использоваться для работы с параллельным портом например так:
function StatPrint: byte; {возвращает слово состояние}
var Reg: Registers;
begin
Reg.Ah:=2; Reg.Dx:=0; Intr($17, Reg);
end;