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