Основной интерфейс между микроконтроллером и внешними устройствами реализуется через параллельные порты ввода-вывода. Во многих микроконтроллерах выводы этих портов служат также для выполнения других функций, например, последовательного или аналогового ввода-вывода.
В зависимости от реализуемых функций различают следующие типы параллельных портов:
• однонаправленные порты, предназначенные только для ввода или только для вывода информации;
• двунаправленные порты, направление передачи которых (ввод или вывод) определяется в процессе инициализации МК;
• порты с альтернативной функцией (мультиплексированные порты). Отдельные линии этих портов используются совместно со встроенными периферийными устройствами МК, такими как таймеры, АЦП, контроллеры последовательных интерфейсов;
• порты с программно управляемой схемотехникой входного/выходного буфера.
Порты выполняют роль устройств временного согласования функционирования МК и объекта управления, которые в общем случае работают асинхронно. Различают три типа алгоритмов обмена информацией между МК и внешним устройством через параллельные порты ввода/вывода:
• режим простого программного ввода/вывода;
• режим ввода/вывода со стробированием;
Триггер управления разрешает вывод данных на внешний вывод.
Необходимо обратить особое внимание на то, что при вводе данных считывается значение сигнала, поступающего на внешний вывод, а не содержимое триггера данных. Если к внешнему выводу подключены выходы других устройств, то они могут установить свой уровень выходного сигнала, который будет считан вместо ожидаемого значения данных, записанных в триггер. В некоторых микроконтроллерах существует возможность выбора между чтением данных, установленных на выходе триггера или на внешнем выводе.
Могут возникнуть некоторые проблемы в микроконтроллерах, которые выполняют чтение данных и их запись в регистр порта с помощью одной команды. При этом ввод неправильных данных приведет к их записи в триггер в результате выполнения команды чтения/записи.