Последний уровень раздела предыдущего изложения   Текущий уровень изложения предыдущего раздела   Текущий уровень изложения следующего раздела   Первый уровень изложения следующего раздела   Уровень:


Организация портов ввода-вывода микроконтроллера -8051

Общие сведения

Альтернативные функции

Из-за ограниченного количества выводов корпуса ИМС микроконтроллера,большинство выводов используется для выполнения двух функций - в качестве линий портов и для альтернативных функций


Вывод порта Альтернативная функция
РЗ.0 RXD - вход последовательного порта
Р3.1 TXD - выход последовательного порта
РЗ.2 INT0 - внешнее прерывание 0
Р3.3 INT1 - внешнее прерывание 1
РЗ.4 Т0 - вход таймера-счетчика 0
РЗ.5 Т1 - вход таймера-счетчика 1
РЗ.6 WR - строб записи во внешнюю память данных
РЗ.7 RD - строб чтения из внешней памяти данных


Альтернативные функции могут быть активированы только в том случае, если в соответствующие биты порта P3 предварительно занесены 1. Неиспользуемые альтернативным образом разряды могут работать как обычно.

Устройство портов

Каждый из портов содержит регистр-защелку (SFR P0 - SFR P3), выходную цепь и входной буфер.

Порт P0

Порт P1

Порт P2

Порт P3

На рисунке изображены функциональные схемы регистров-защелок и буферов ввода-вывода всех портов микро-ЭВМ 8051. Каждый из разрядов регистра-защелки SFR является D-триггером, информация в который заносится с внутренней шины данных микроконтроллера по сигналу «Запись в SFR Pх» (х= 0, 1, 2, 3) от центрального процессорного элемента (CPU). С прямого выхода D-триггера информация мажет быть выведена на внутреннюю шину по сигналу «Чтение SFR Pх» от CPU, а с вывода микросхемы («из внешнего мира») по сигналу «Чтение выводов Pх». Одни команды активизируют сигнал «Чтение SFR PI», другие - «Чтение выводов РI».

Особенности электрических характеристик портов

Выходные каскады триггеров SFR портов Р1 - РЗ выполнены на полевых транзисторах с внутренней нагрузкой, в то время как аналогичные каскады триггеров SFR P0-на транзисторах с открытым стоком. Каждая линия любого из портов может независимо использоваться как для ввода, так и для вывода информации (для линий портов P0 и Р2 это справедливо тогда, когда они не используются для обращения к внешней памяти).

Для перевода любой линии портов Р1 - РЗ в режим ввода информации необходимо в соответствующий разряд SFR занести 1. При этом выходной полевой транзистор отключается. Внутренний нагрузочный резистор как бы (подтягивает) потенциал вывода к напряжению питания, в то время как внешняя нагрузка может сделать его нулевым. Выходные каскады порта P0 имеют иную структуру. Нагрузочный полевой транзистор линии порта включен только тогда, когда порт выводит 1 при обращении к внешней памяти. В остальных случаях нагрузочный транзистор отключен. Таким образом, при работе в режиме обычного ввода-вывода информации (как, например, порт Р1) выходные каскады порт P0 представляют собой ступени на транзисторах с открытым стоком. Запись 1 в соответствующий бит SFR отключает и второй транзистор, что приводит к тому, что вывод БИС оказывается под (плавающим) потенциалом. Это позволяет использовать линии порта P0 как выводы с высоко импедансным состоянием.

Поскольку выходные каскады портов P1 - P3 имеют внутреннюю нагрузку, при переводе в режим ввода информации они становятся источниками тока для микросхемы или транзистора, нагруженных на данный вывод. Поэтому порты P1 - P3 получили название (квазидвунаправленные), в отличие от (истинно двунаправленного) порта P0, переводимого в режиме ввода информации в высокоимпедансное состояние.

Каждый из выводов портов P1 - P3 может быть нагружен на четыре ТТЛШ-входа (микросхемы серии К555). Они не требуют внешней нагрузки, но если к этим выводам подключены ненагруженные выводы микросхем с открытым коллектором или стоком, время установления сигнала может затянуться. Выводы порта P0 при обращении к внешней памяти могут быть нагружены на восемь ТТЛШ-входов. При использовании в качестве обычного порта каждый из выводов должен быть подключен к шине питания через резистор сопротивлением 10...20 Ком. При использовании порта P0 в качестве шины адреса данных необходимость в этом отпадут.

Особенности команд обмена данных с портами

Обращение к портам ввода-вывода возможно с использованием команд, оперирующих с байтом, отдельным битом и произвольной комбинацией бит. При этом в тех случаях, когда порт является одновременно операндом и местом назначения результата, автоматически реализуется специальный режим (чтение-модификация-запись). Этот режим обращения предполагает ввод сигналов не с внешних выводов порта, а из его регистра-защелки SFR. Причиной, по которой оказалось необходимым осуществить команды типа «чтение-модификация-запись», является необходимость исключить неправильное считывание уровня сигнала на выводе микроЭВМ. Предположим, например, что линия Х порта V соединена с базой мощного транзистора, используемого в качестве электронного ключа, и выходной сигнал микроЭВМ предназначен для его коммутации (транзистор открывается, когда в данный бит записана 1). Если для проверки состояния исполнительного механизма, управляемого этим транзистором, прикладной программе требуется прочитать состояние выходного сигнала в том же бите порта, то считывание сигнала с вывода БИС, а не из D-триггера SFR порта, приведет к неправильному результату. Единичный сигнал на базе транзистора имеет относительно низкий уровень и будет интерпретирован CPU микро-ЭВМ как 0. Команды типа (чтение-модификация-запись) реализуют. Считывание из регистра SFR, а не с вывода порта, что обеспечивает получение правильного значения 1.

Режим «чтение-модификация-запись» реализован в командах ANL; ORL; XRL; JBC; CPL; INC; DEC; DJNZ; MOV Px.y, С; CLR Px.y; SETB Pх.y. Более подробно о них рассказано при описании системы команд.