- •9.1.2. Синхронная связь
- •9.1.3. Стандарты физической связи
- •9.1.4. Программируемый связной интерфейс
- •Интерпретация сигналов управления
- •9.2. Параллельная связь
- •Адресация микросхемы 82s5a
- •9 2.2 Пример использования
- •Обращения к регистрам таймера/счетчика 8254
- •9.4.3. Контроллер клавиатуры/индикатора
- •Адресация регистров контроллера 8279
9 2.2 Пример использования
На рис. 9.23 показано возможное подключение микросхемы 8255А к аналого-цифровой и цифро-аналоговой подсистемам. Так во время аналого-цифрового преобразования аналоговое напряжение должно оставаться неизменным, необходима схема выборки и сохранения. Группа А работает на ввод в режиме 1. Преобразование инициируется сигналом на выходе РС7, что стимулирует преобразователь выдать сигнал занятости. Линия занятости подключена на .вход управления выборкой и сохранением (S/H) и на вход одновибратора, запускаемого спадающим фронтом. Пока сигнал занятости имеет высокий уровень, схема выборки и сохранения поддерживает постоянный выход, а когда в конце преобразования сигнал занятости снимается, запускается одновибратор. Его выход инвертируется и подается на вход STBд (PC4) микросхемы 8255А. Он заставляет цифровой отсчет стробироваться в порт А. В цифро-аналоговой части подсистемы порт В работает как выходной в режиме 0; он подключен непосредственно на двоичный вход цифро-аналогового преобразователя. Квитирование здесь не применяется.
Предположим, что порты А, В и С и регистр управления имеют адреса FFF8, I FF9 FFFA и FFFB. Тогда команды
MOV AL.10110000В
OUT DX,AL
заставляют порт А работать в режиме 1, порт В - в режиме 0, а РС7 быть выходом. Следующий фрагмент формирует импульс на входе запуска аналого-цифрового преобразователя.
28
MOV DX,OFFFBH MOVAL,00001111B OUT DX,AL MOVAL,00001110B OUTDX,AL
Здесь первая команда загружает в регистр DX адрес, ассоциируемый с командой установки/сброса, который совпадает с адресом регистра управления Следующие две команды формируют сигнал РС7-= 1, а последние две ~ сигнал РС7 = 0. Фрагмент программного ввода преобразованных данных имеет вид
MOV DX.OFFFAH AGAIN: IN AL,DX
TEST A L.,001 OOOOOB
JZ AGAIN
MOV DX.OFFF8H
IN AL,DX
Рис. 9.23. Интерфейс аналого-цифровой и цифро-аналоговой подсистем с применением микросхемы 8255А
Для вывода байта из регистра AL в цифро-аналоговый преобразователь требуются только две команды.
MOV DX.OFFF9H
OUT DX,AL
Как только байт появляется в порту В, его биты сразу подаются на входы цифро-аналогового преобразователя, который в свою очередь сразу же преобразует их в аналоговый сигнал.
В данном примере предполагается, что синхронизация преобразований осуществляется программой и что коэффициенты усиления входного и выходного аналоговых усилителей регулируются. Чтобы получить от программы равномерное распределение входных и выходных отсчетов, необходимо учитывать времена выполнения команд. Между отсчетами выполняются одни и те же команды и общее время их выполнения точно известно Прерывания необходимо запретить, так как они случайным образом вводят выполнение разного числа команд Интервал между отсчетами можно скорректировав с помощью цикла "ничегонеделания", например
MOV CX,N
IDLE NOP
LOOP IDLE
между вводами или выводами. Схема ввода с программной синхронизацией отсчетов аналого-цифрового преобразования представлена на рис. 9.24
Рис.
9.24 Программная
синхронизация
ввода отсчетов
На рис 9.23 показаны только 8-битные преобразователи, имеющие разрешающую способность 1 из 256. Если диапазон входного или выходного напряжений равен -10 ... +10 В, разрешающая способность составляет
20/256= 0,078В.
Для улучшения разрешающей способности применяются 10-, 12- или 14-битные преобразователи. В этом случае приходится пользоваться комбинацией портов А и С или В и С (см упр. 14) или параллельно включать две микросхемы 8255А (см. § 9.7).
9.3. ПРОГРАММИРУЕМЫЕ ТАЙМЕРЫ И СЧЕТЧИКИ СОБЫТИЙ .
Довольно часто требуется устройство формирования временных интервалов для процессора и внешних устройств, подсчета внешних событий и ввода показаний в процессор, а также генерирования внешней синхронизации, которую может программировать процессор. Такое устройство называется программируемым интервальным
таймером/счетчиком событий. Некоторыми областями применение такого устройства являются:
прерывание операционной системы с разделением времени через равномерные интервалы, чтобы она осуществляла переключение программ;
вывод точных временных сигналов с программируемыми периодами в устройство ввода-вывода (например, в аналого-цифровой преобразователь);
программируемая генерация скорости передачи в бодах;
измерение временной задержки между внешними событиями;
подсчет числа появлений событий во внешнем эксперименте и ввод показания в компьютер;
31
Рис. 9.25. Типичный интервальный таймер/счетчик событий
прерывание процессора после появления запрограммированного числа внешних событий.
Типичная организация интервального таймера/счетчика событий показана на рис. 9.25. Слева находятся четыре доступных компьютеру регистра: два верхних являются выходными портами, а два нижних - входными. Сам счетчик прямо процессору не доступен, но может инициализироваться из регистра начального счета и считывается посредством передачи его содержимого в выходной регистр счетчика. Счетчик запускается с начального значения и отсчитывает до 0. Вход CLK определяет скорость счета, сигнал GATE разрешает и запрещает вход CLK и, возможно, выполняет другие функции, а выход OUT-становится активным при достижении счетчиком 0 или, возможно, при подаче сигнала ATE. Выход OUT подключается к линии запроса прерывания в системной шине, поэтому прерывание возникает при достижении счетчиком 0; его же можно подключить к устройству ввода-вывода для инициирования необходимых действий.
Устройство вводит значение в регистр начального счета, передает его в счетчик и выполняет счет "назад" (т. е. вычитание) импульсами со входа CLK. Текущее содержимое счетчика в любой момент можно ввести в процессор, не нарушая работы счетчика, посредством передачи его в выходной регистр счетчика с последующим считыванием из этого -регистра. При буферировании содержимого счетчика не требуется вводить его в процессор немедленно. Индикация нуля в счетчике обычно фиксируется на выходе OUT и в одном бите' регистра состояния. Поэтому для обнаружения нуля допускается применять Программный ввод-вывод и ввод-вывод по прерываниям.
Регистр управления определяет режим работы и выполняет другие функции. Режим точно определяет, что происходит при достижении счетчиком 0 и (или) при подаче сигнала на вход GATE. Возможными
32
действиями являются:
вход GATE применяется для разрешения и запрещения входа CLK;
вход GATE вызывает реинициализацию счетчика;
вход GATE прекращает счет и формирует высокий уровень на выходе OUT;
при достижении 0 счетчик выдает сигнал OUT и останавливается;
при достижении 0 счетчик выдает сигнал OUT и автоматически реинициализируеюя из регистра начального счета.
Режимы могут также определяться комбинациями перечисленных возможностей Рассмотрим, например, применение интервального таймера в операционной системе разделением времени. В этом случае на вход CLK подаются сигналы синхронизации, а выход OUT подключается к линии запроса прерывания, возможно, немаскируемого прерывания. Вход GATE здесь не требуется. При включении системы в регистр начального счета загружается значение
начальный счет = частота синхронизации X Т,
где Т - продолжительность каждого временного кванта в секундах. Задается такой режим, что при достижении счетчиком 0 содержимое регистра начального счета вновь загружается в счетчик, а выход OUT становится активным. Поскольку сигнал OUT используется как запрос прерывания, процедура прерывания для переключения программ будет выполняться с интервалом Т секунд.
9.3.1. ПРОГРАММИРУЕМЫЙ ИНТЕРВАЛЬНЫЙ ТАЙМЕР На рис. 9.26 представлена схема интервального таймера/счетчика событий 8254 фирмы Intel. В нем имеются три одинаковые счетные схемы со своими входами CLK и GATE и выходом OUT. Каждая схема имеет регистр управления и состояния, регистр счетчика (CR) для приема начального счета, счетного элемента (СЕ) , который выполняет счет, но непосредственно процессору недоступен, и выходного регистра-защелки (OL) для фиксации содержимого СЕ, так что его может считать процессор. Полагается, что CR, СЕ и OL представляют собой пары 8-битных регистров. (Реальные схемы несколько отличаются от приведенных, но для программиста рисунок абсолютно точен.)
Обращения к регистрам производятся в соответствии с табл. 9.3.
Таблица 9.3