УСО для ввода данных с преобразованием из непрерывной формы в дискретную могут использоваться для ввода данных с непрерывных датчиков или задающих устройств.
Непосредственно преобразование из непрерывной в дискретную форму осуществляется аналого-цифровым преобразователем (АЦП). Рассматрим его в обобщенном виде (рис. 1):
Рис. 1.  
В простейшем случае АЦП имеет один аналоговый вход. Выходом АЦП являются параллельных линий, по которым передается двоичное число, пропорциональное входному сигналу — цифровой выход. АЦП может быть подключен непосредственно к магистрали МПС и участвовать в обмене, как обычное УВВ. Соответственно, он имеет управляющие сигналы RD (разрешение чтения) и CS (выбор микросхемы).
Процесс преобразования данных в АЦП инициируется сигналом запуска (START).
Сигнал EOP сообщает об окончании преобразования и готовности данных на выходе АЦП. Временная диаграмма работы АЦП представлена на рис. 2.
Рис. 2.  
Время от начала преобразования (запуска АЦП) до окончания преобразования (готовности выходных данных) называется временем преобразования (). Для различных АЦП время преобразования варьируется от десятков микросекунд до сотен миллисекунд.
Задача построения УСО с использованием АЦП распадается на три подзадачи:
Организация подключения АЦП к магистрали МПС
Подключение АЦП к магистрали МПС осуществляется весьма просто, так как АЦП может рассматриваться с точки зрения обмена с МП в качестве обычного УВВ.
Рис. 3.  
Представленная схема обеспечивает возможность ввода данных из АЦП командой IN при установке на шине адреса значения 0000h.
Организация запуска АЦП
Запуск АЦП может осуществляться асинхронно, путем формирования стартового импульса через параллельный порт, или периодически, с помощью программируемого таймера.
В случае асинхронного запуска линия запуска АЦП START подключается к одному из выводов параллельного порта (на рис. 4. – вывод 0 порта А ППИ).
Рис. 4.  
Формирование собственно импульса производится путем установки в "1" младшего бита порта А ППИ, а затем – сброса его в "0" (см. рис. 4).
MOV AL, 0001h         ; маска - "1" в младшем разряде
OUT 0000h, AL         ; записываем в порт 1 - начало импульса

MOV AL, 0000h         ; маска - "0" в младшем разряде
OUT 0000h, AL         ; записываем в порт 0 - окончание импульса
Длительность импульса определяется временным интервалом между выполнением двух команд OUT, она может быть определена по известной тактовой частоте МП и должна быть не менее требуемой для используемого АЦП.
Для организации периодического запуска АЦП используется программируемый таймер (рис. 5).
Рис. 5.  
Программируемый таймер подключается к шинам адреса, данных и управления как показано на рис. 5. Такое подключение обеспечивает возможность обращения к нему на этапе программирования (начальной инициализации) для настройки на нужный режим работы.
Таймер работает в режиме генерации последовательности одиночных импульсов с заданным интервалом. Импульсы с выхода OUT0 поступают на вход запуска АЦП. Каждый импульс запускает преобразование в АЦП, таким образом, интервал между ними должен быть больше времени преобразования.
На вход CLK0 подаются импульсы от тактового генератора. Частота этих импульсов и начальные установки таймера определяют периодичность запуска АЦП.
Определение момента окончания преобразования и инициация процедуры обмена
Так как преобразование данных в АЦП происходит не мгновенно, данные с его выхода могут быть считаны не в любой момент времени, а только после завершения преобразования. То есть перед началом обмена должна быть проверена готовность устройства (завершенность преобразования). Поэтому в данном случае мы не можем использовать синхронный обмен, а должны использовать обмен асинхронный, по прерываниям или с использованием ПДП.
Использования асинхронного обмена
При асинхронном обмене МП должен иметь возможность проанализировать готовность АЦП перед началом обмена. Готовность АЦП определяется значением на выход EOP — "1" означает завершенность преобразования (готовность к обмену). Следовательно, значение сигнала EOP должно быть считано МП. Для этого используется параллельный порт в режиме ввода информации (рис. 6).
Рис. 6.  
В приведенной схеме линия готовности АЦП подключена к линии PA0 ППИ — таким образом, состояние линии EOP может быть определено путем анализа младшего бита порта А ППИ.
Адрес порта А ППИ при данной схеме подключения — 0000h, адрес выходного регистра АЦП — 00000100b (04h). Фрагмент программы, анализирующий состояние АЦП и выполняющий ввод данных в случае его готовности выглядит следующим образом:
IN AL, 0000h        ; Введем значение из порта А ППИ
AND AL, 1           ; Анализируем значение младшего бита (маска 0000001)
JZ _NotReady        ; Если бит=0 - АЦП не готов, данные с него не вводим
IN AL, 0004h        ; Иначе (бит=1,АЦП готов) - вводим данные с АЦП
............        ; Обработка данных, введенных с АЦП
_NotReady:
............        ; Продолжение основной программы
Использование обмена по прерываниям
Для организации обмена по прерываниям используется контроллер прерываний (рис. 7).
Рис. 7.  
Контроллер прерываний подключается к шинам адреса, данных и управления как показано на рис. 7. Такое подключение обеспечивает возможность обращения к нему на этапе программирования (начальной инициализации) для настройки на нужный режим работы. По сравнению с предыдущими схемами, шина управления здесь дополнилась сигналами INT (запрос на прерывание, посылаемый процессору) и INTA — подтверждение прерывания от МП. Сигнал готовности EOP подается на один из входов запроса прерывания контроллера (в нашем примере — IRQ0).
Схема работает следующим образом. По окончании преобразования, сигнал EOP устанавливается в "1". Контроллер прерываний рассматривает его как запрос на прерывание и инициирует процедуру обмена: посылает в МП сигнал запроса INT, дожидается подтверждения от МП по линии INTA, передает в МП номер устройства, запросившего прерывание. Микропроцессор по номеру устройства вызывает соответствующую подпрограмму обработки прерывания, которая и выполняет собственно обмен. Примерный вид подпрограммы обработки прерывания для ввода данных с АЦП:
IN AL, 0004h         ; Вводим данные с АЦП
...........          ; Обработка данных, введенных с АЦП
IRET                 ; Возврат из подпрограммы обработки прерывания
Так как АЦП сам инициирует обмен в момент завершения преобразования, проверка его готовности внутри подпрограммы обмена не производится.
Использование прямого доступа в память (ПДП)
Для организации обмена в режиме ПДП используется контроллер ПДП (рис. 8).
Рис. 8.  
Контроллер ПДП подключается к шинам адреса, данных и управления как показано на рис. 8. Такое подключение обеспечивает возможность обращения к нему на этапе программирования (начальной инициализации) для настройки на нужный режим работы.
По сравнению с предыдущими схемами, шина управления здесь дополнилась сигналами HRQ (запрос МП на предоставление шин) и HLDA (разрешение использование шин).
Сигнал готовности АЦП используется в качестве запроса на выполнение прямого доступа в память. После активизации этого сигнала контроллер ПДП начинает стандартную операцию передачи данных из ВУ (АЦП) в соответствующую ячейку ЗУ (запрос разрешения у МП, формирования адреса и сигналов управления и т.п.). Таким образом, данная схема, работая независимо от МП, обеспечивает наличие в определенной ячейке ЗУ последнего актуального значения с выхода АЦП.