Введение.
Стандартные интерфейсы 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;