Рассмотрим особенности организации устройств сопряжения с объектом (УСО) при использовании однокристальных микроЭВМ в качестве основы для построения микропроцессорной системы управления (на примере использования микроконтроллера серии MCS-51).
Рассмотрим следующие разновидности УСО: УСО для ввода данных без преобразования, для ввода данных с преобразованием из непрерывной формы в дискретную, из дискретной в дискретную и УСО для ввода данных в последовательном формате.
УСО для ввода данных без преобразования
Под вводом информации без преобразования следует понимать ввод информации с устройства, обеспечивающего ее передачу в параллельном двоичном формате (пример — цифровой датчик положения). В этом случае УСО должно включать в себя параллельный порт. Так как однокристальный микроконтроллер уже имеет в своем составе четыре параллельных порта, необходимо всего лишь подключить параллельные линии передачи информации (например, выходы цифрового датчика) ко входам соответствующего параллельного порта микроЭВМ.
В случае, если разрядность принимаемых данных превышает разрядность параллельного порта (8 бит), необходимо использовать несколько параллельных портов. Для обеспечения корректности вводимых данных, с учетом того, что ввод осуществляется "побайтно", перед началом собственно ввода необходимо "зафиксировать" полное вводимое двоичное число в буферных регистрах с целью обеспечения его неизменности во время всего процесса ввода (рис. 1).
Рис. 1.  
На рис. 1 представлен вариант УСО для случая 16-разрядного датчика. Для ввода информации используются порты Р1 и Р0 микроконтроллера. Для фиксации данных с датчика на время цикла ввода используются два буферных регистра. Фиксация данных в буферном регистре производится по заднему фронту сигнала STB. Этот сигнал соединен с одним из выходов порта P2 (Р2.0). Формирование строба на входе буферного регистра осуществляется путем последовательной установки "1" и "0" на выходе 0 порта Р2.
Окончательно процедура ввода данных выглядит следующим образом:
  1. Установить нулевой бит порта Р2 в "1" (начало стробирующего импульса).
  2. Установить нулевой бит порта Р2 в "0" (окончание стробирующего импульса, данные фиксируются в буферных регистрах).
  3. Прочитать данные из порта Р1 (ввод младшего байта данных с датчика).
  4. Прочитать данные из порта Р0 (ввод старшего байта данных с датчика).
УСО для ввода данных с преобразованием из непрерывной формы в дискретную
Для собственно преобразования из непрерывной формы в дискретную используется аналого-цифровой преобразователь (АЦП), подключаемый к одному из параллельных портов микроконтроллера (рис. 2).
Рис. 2.  
Для запуска АЦП можно использовать:
Рис. 3.  
В приведенной на рис. 3 схеме для запуска АЦП необходимо установить бит 0 порта Р0 в "1", формируя, таким образом, передний фронт запускающего импульса.
Для анализа готовности УСО можно использовать асинхронный способ или метод обмена по прерыванию. Обмен с использованием ПДП неприменим, так как он не поддерживается рассматриваемым микроконтроллером.
Для организации асинхронного обмена выполняется подключение выхода готовности АЦП ко входу одного из параллельных портов микроконтроллера (рис. 4).
Рис. 4.  
В приведенном на рис. 4 примере для анализа готовности АЦП используется первый вход порта Р0. Таким образом, для того, чтобы проверить готовность АЦП к обмену необходимо проанализировать значение первого бита входного регистра порта Р0.
Для организации обмена по прерываниям, сигнал готовности необходимо соединить с одним из входов запроса на прерывание. В рассматриваемом микроконтроллере таких входов два, они соответствуют входам 2 и 3 порта Р3.
Рис. 5.  
На рис. 5 вход Р3.2 использован в качестве входа запроса на прерывание от внешнего источника. Обратите внимание, что в этом случае порт Р3 требует предварительной настройки, показывающей, что его вторая линия будет использоваться в режиме альтернативной функции (сигнал запроса на прерывание), а не как линия порта ввода-вывода.
УСО для ввода данных с преобразованием из дискретной формы в дискретную
УСО этого типа рассмотрены в модуле УСО для ввода данных с преобразованием из дискретной формы в дискретную на примере ввода с импульсных датчиков скорости и положения. В обоих случаях основным элементом УСО является счетчик. Микроконтроллер уже имеет в своем составе внутренний счетчик, поэтому сигнал с импульсного датчика должен быть подключен к счетному входу одного из внутренних счетчиков (Р3.4 или Р3.5). Вся логика работы УСО реализуется программно внутри микроконтроллера.
УСО для ввода данных в последовательном формате
Для ввода данных в последовательном формате используется внутренний последовательный порт микроконтроллера, входом которого является линия Р3.0.