Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 1 по 294.doc
Скачиваний:
13
Добавлен:
16.04.2019
Размер:
6.2 Mб
Скачать

4.1.5. Порты ввода/вывода

Каждый МК имеет некоторое количество линий ввода/вывода, которые объединены в 8-разрядные параллельные порты ввода/вывода РТх («х»-имя порта, используемое в техническом описании). Порты обозначают либо цифрами (РТО, РТ1, РТ2 и т.д.), либо буквами латинского алфавита (РТА, РТВ, РТС и т. д.). В карте памяти МК каждый порт ввода/вывода представлен регистром данных порта DPTx. В режиме ввода логические уровни сигналов на линиях порта РТх отображаются нулями и единицами в соответству­ющих разрядах регистра DPTx. В режиме вывода данные, записанные под управлением программы в регистр DPTx, передаются на выводы МК, которые отмечены в качестве линий порта РТх. Обращение к регистру данных DPTx осуществляется теми же команда­ми, что и обращение к ячейкам резидентной оперативной памяти. Кроме того, во многих МК отдельные разряды портов могут быть опрошены командами битового процессора.

С функциональной точки зрения различают следующие типы параллельных портов.

  1. Однонаправленные порты, предназначенные в соответствие со спецификацией мк только для ввода или только для вывода информации.

  2. Двунаправленные порты, направление передачи которых (ввод или вывод) определяется в процессе инициализации системы.

  3. Порты с альтернативной функцией. Отдельные линии этих портов связаны со встро­енными в МК периферийными устройствами, такими как таймер, АЦП, контроллеры последовательных приемо-передатчиков. Если соответствующий периферийный модуль МК не используется, то его выводы можно задействовать как обычные линии ввода/вы­вода. Напротив, если модуль активизирован, то принадлежащие ему линии ввода/выво­да автоматически конфигурируются в соответствии с функциональным назначением в модуле и не могут быть использованы в качестве линий ввода/вывода. Как однонаправлен­ные, так и двунаправленные линии портов могут иметь альтернативную функцию.

Рассмотрим схемотехнические особенности буферов линий ввода/вывода МК. В спе­циальной литературе выходные каскады линий ввода/вывода часто называют драйвера­ми (не путать с аналогичным обозначением программных средств). Двунаправленные порты большинства современных МК выполнены с возможностью независимого задания направления передачи каждой линии, т. е. объединение групп линий в порты позволяет орга­низовать обращение к ним как к ячейкам памяти, что удобно при организации обмена в парал­лельном формате. Но в случае необходимости каждая линия может быть сконфигуриро­вана индивидуально и обслужена командами битового процессора независимо от других линий того же порта ввода/вывода. Учитывая это обстоятельство, схемотехника портов ввода/вывода рассматривается на уровне одной линии.

Различают следующие типы драйверов ввода/вывода:

  1. двунаправленные линии, которые настраиваются на ввод или на вывод програм­мированием бита в регистре направления передачи DDPTx; при работе в режиме ввода линия имеет высокое входное сопротивление;

  2. двунаправленные линии, которые не требуют предварительной инициализации; такие линии имеют некоторые особенности при считывании; в режиме ввода эти линии также имеют высокое входное сопротивление;

  3. квазидвунаправленные линии; не требуют предварительной инициализации; в ре­ жиме ввода драйвер автоматически подключает «подтягивающий» к напряжению пита­ния резистор;

  4. двунаправленные линии с возможностью программного подключения «подтягива­ющих» резисторов.

Примером драйверов 1-го типа могут служить линии ввода/вывода МК НС08 Motorola (рис. 4.2). Каждой линии порта поставлен в соответствие одноименный разряд регистра

направления передачи DDPTx. Нулевое значение разряда конфигурирует линию на ввод, единичное - на вывод. После сброса МК все линии настроены на ввод. Из рис. 4.2 видно, что в режиме ввода состояние непосредственно в момент считывания логический уровень сигнала линии передается на внутреннюю магистраль данных, минуя регистр данных порта DPTx. В процессе чтения линии ее состояние не запоминается в регистре DPTX и, следовательно, каждое новое обращение к порту ввода может возвращать новое значе­ние. В режиме ввода транзисторы VT1 и VT2 закрыты, буфер находится в высокоомном состоянии (Z-состояние). Значение, которое будет возвращать операция чтения неподк­люченного входа, в общем случае не определено. Однако на практике его «доопределяют» за счет различия эквивалентных сопротивлений плеча с VT1 и с VT2. Так, в МК семей­ства НС08 Motorola чтение неподключенного входа возвращает «О». Если в качестве источника сигнала для рассматриваемого высокоомного входа используется логический элемент с открытым коллекторным выходом, то входной сигнал не будет зависеть от состояния выходного транзистора элемента. Он всегда будет равен «О». Для задания единичного логического уровня входного сигнала следует подключить внешний резис­тор, который обычно обозначают RPULLUP. При работе линии в режиме вывода транзисто­ры VT1 и VT2 драйвера управляются сигналом с выхода триггера регистра данных DPTx. Примером драйверов двунаправленных портов, которые не требуют инициализации, могут служить драйверы порта РОМК 8051 АН фирмы «Intel» (рис. 4.3). Особенность этих драйверов заключается в том, что при считывании возвращаемое значение равно логи­ческому произведению сигнала на линии и содержимого одноименного триггера регистpa данных порта DPTx. По этой причине те разряды порта, которые будут считываться, должны быть предварительно установлены в «1» командой записи в порт и лишь затем прочитаны. Порты с рассматриваемой схемотехникой не имеют регистра направления передачи и, следовательно, не должны инициализироваться. При работе в режиме вво­да линия имеет высокое входное сопротивление, но при чтении неподключенного входа возвращается «1».

Квазидвунаправленные драйверы реализованы в портах Р1, Р2, и РЗ МК8051АН фирмы «Intel». Они отличаются от предыдущего драйвера тем, что вместо транзистора VT2 установлен внутренний «подтягивающий» резистор RPULLUP(pиc. 4.4). Поэтому вход­ное сопротивление линии ввода не столь велико, как в двух предыдущих случаях, т. е. входной буфер линии не эквивалентен входу логического элемента. Поэтому драйвер с рассматриваемой схемотехникой и получил название квазидвунаправленного. Линии с этим типом драйвера не требуют инициализации, но для работы в режиме ввода так же как и в предыдущем случае, необходимо предварительно записать в соответствую­щий разряд регистра данных «1».

Драйверы линий с изменяемой схемотехникой могут быть выполнены двумя способа­ми (рис. 4.5, 4.6). Однако преследуемая цель одна - сократить число навесных элемен­тов платы МП контроллера.

В первом случае (рис. 4.5) драйвер каждой линии содержит «подтягивающим к 1» резистор (RPULLUP), который обеспечивает уровень логической единицы на входе при ра­зомкнутом контакте. Во втором случае (рис. 4.6) драйвер дополнен «подтягивающим к О» резистором (PiPULLDOUN), который способен служить нагрузочным резистором датчика, выходной каскад которого выполнен по схемеэиттерного повторителя. Рассматривав мые драйверы часто используются в МК фирмы «Motorola». Логика управления встроен­ными «подтягивающими» резисторами одинакова для обоих типов драйверов: ei Т9,./тч *

  • подключение «подтягивающих» резисторов допускается аппаратными средствами драй­ вера только при конфигурировании линии порта на ввод;

  • специальный бит регистра конфигурации МК разрешает программное подключение «подтягивающих» резисторов на всех линиях ввода одновременно, но не выполняет это подключение;

  • коммутацией «подтягивающего» резистора каждой линии управляет одноименный бит регистра входного сопротивления PTUEx; значение этого бита может многократно из­ меняться в ходе выполнения прикладной программы, тем самым осуществляется ди­намическое управление входным сопротивлением линии порта ввода и током потреб­ления этой линии.

Рассматривая особенности драйверов линий ввода/вывода, нельзя не остановиться на понятии нагрузочной способности линии. Различают линии с нормальной и повышенной нагрузочной способностью. Если речь идет о нормальной нагрузочной спо­собности, то следует ориентироваться на следующие цифры: ых = 1,6+2,0 мА, 1\ш = 0,4+2,0 мА. Типовые значения повышенной нагрузочной способности: ых = /в'ьи = = 25 мА. Предельное значение повышенной нагрузочной способности на сегодняшний день составляет: 1\ых =60 мАдля Microchip PIC17. Следует заметить, что число выво­дов с повышенной нагрузочной способностью обычно ограничено. Кроме того, в справочных данных указан максимальный суммарный ток всех линий ввода/вывода, который ограничен теплоотводом корпуса МК.