Реклама:

ключающий режимы чтения (КЕ=0) и записи (&Е-1). Сигнал управления мультиплексором назван здесь "1/2".

3.1.4. Универсальный параллельный адаптер

Примером, достаточно полно иллюстрирующим возможности магистрального сопряжения устройств с интерфейсом Centronics, является схема универсального параллельного адаптера — УПА (рис. 3.6). УПА предназначен для информационного программно-управляемого обмена с периферийными устройствами по семи байтовым двунаправленным портам PORTO — PORT6 и по своим возможностям аналогичен универсальному контроллеру параллельного обмена, описанному в 2.1.9 (как уже упоминалось, оба названия равнозначны).

Для вывода данных используются семь регистров КР1533ИР23 — по одному на каждый порт, а для ввода — восемь мультип-

Разработка устройств сопряжения для персонального компьютера типа IBM PC. Под общей редакцией Ю. В. Новикова

Рис.3.5. Модуль ОЗУ емкостью 16 К байт.

Разработка устройств сопряжения для персонального компьютера типа IBM PC. Под общей редакцией Ю. В. Новикова

Рис. 3.6. Универсальный параллельный адаптер.

лексоров КР1533КП7 — по одному на каждый, бит данных. Семь младших битов регистра конфигурации (два триггера КР1533ТМ8) устанавливают направление передачи каждого из портов — чтение (0) или запись (1). Старший бит переключает тетрады входного мультиплексора КР1533КП11. При включении питания все порты устанавливаются на чтение.

Важно отметить, что так как к шинам данных и управления интерфейса Centronics должно быть подключено несколько нагрузок, то их приходится буферировать. Для этого предназначены микросхемы КР1533АП5 и КР1533ЛН1.

3.2. Проектирование программного обеспечения для обмена через Centronics

Для персонального компьютера семейства IBM PC имеются Две возможности программирования параллельного порта — обращение по физическим адресам регистров порта (нижний Уровень) или вызов программного прерывания 17Н (верхний уровень). При этом в обоих случаях может использоваться как ассемблер, так и язык высокого уровня. В данном разделе, как и ранее, все примеры написаны на языке Си.

3.2.1. Программирование на нижнем уровне

Параллельный порт имеет три адреса в пространстве устройств ввода-вывода компьютера:

BASE — регистр данных,

BASE+1 — регистр состояния,

BASE+2 — регистр управления.

Здесь "BASE" — первый адрес порта. В компьютере может быть до трех параллельных портов — LPT1 ... LPT3. Таблица базовых адресов портов находится в области данных BIOS, начиная с ячейки 408Н: LPT1 - 0:408, LPT2 - 0:40А, LPT3 -0:40С (все коды 16-ричные). Если порт не установлен, то в соответствующей ячейке записан 0.

Таким образом, перед обращением к порту необходимо выполнить процедуру определения его базового адреса. Ниже приведен фрагмент программы, устанавливающий базовый адрес порта LPT1 (переменная Cent_Base).

b = (int *) MK_FP (0,0x408); // Указатель на ячейку 0:408 if ( *b != 0 ) // Если порт установлен

Cent_Base = *b; // Считываем его базовый адрес

else . // Иначе — какие-то действия

Программирование подключенной к параллельному порту аппаратуры заключается в установке определенных битов в регистрах данных и управления и чтении определенных битов из регистра состояния. При этом если с регистром данных проблем не возникает (это обычный байтовый регистр), то два других регистра имеют некоторые особенности. Во-первых, некоторые биты являются инверсными. При записи в регистр управления нуля в этих битах устанавливаются единицы, а если на входах регистра состояния установлены нули, то из этих битов считываются единицы. Во-вторых, если четыре бита регистра управления расположены в младших битах байта (биты 0-3), то пять битов регистра состояния — в старших (биты 3-7). Полная информация об отображении сигналов шин управления и состояния интерфейса Centronics на регистры параллельного порта компьютера приведена в табл. 3.1.


⇐ Предыдущая страница| |Следующая страница ⇒