Параллельные порты

 

Все линии ввода/вывода микроконтроллеров семейства MCS-51 сгруппи­рованы в несколько двунаправленных параллельных 8-разрядных портов. Микроконтроллеры типа 8051 АН имеют четыре параллельных порта Р0-Р3. Эти порты могут использоваться как для выполнения функций обмена данными (допуская при этом поразрядное программирование на ввод или на вывод), так и для выполнения альтернативных функций, таких как обра­щение к внешней памяти, прием запросов прерываний и другие.

При обращении к внешней памяти используются порты Р0 и Р2. Через порт Р0 выдается младший байт адреса, который должен быть зафиксирован во внешнем регистре, поскольку вслед за ним на линиях порта появляются дан­ные для записи или чтения. Через порт Р2 выдается старший байт адреса. В микроконтроллерах типа 8051 и 8751 с внутренней памятью программ в ус­ловиях, когда внешняя память программ не используется, порты Р0 и Р2 мо­гут служить для обмена данными как порты общего назначения. В микрокон­троллерах с программируемой внутренней памятью программ порт РО используется для ввода или вывода байта кода при записи и верификации. Младший байт адреса при программировании и чтении внутренней памяти вводится через порт Р1, а старший байт адреса — через порт Р2.

На рис. 3.10 приведены структурные схемы аппаратных средств, обслужи­вающих одну линию каждого из портов Р0-РЗ. Все линии параллельных портов имеют защелки (типа D-триггера), которые объединены в группы по восемь и рассматриваются как регистры специальных функций Р0-РЗ. Кроме защелки, каждая линия ввода/вывода имеет входной буфер и фор­мирователь выходного сигнала. На рис. 3.10 видно, что на внутреннюю шину микроконтроллера может быть прочитано как состояние каждой из заще­лок, так и значения сигналов на внешних выводах. Часть команд микрокон­троллера во время выполнения читают защелки (регистры портов), а дру­гие — значение сигналов на линиях портов.

Для выполнения портом Р3 альтернативных функций в соответствующий разряд регистра порта должна быть записана «1». Во время обращения к внешней памяти во все разряды порта Р0 автоматически записываются «1», значения защелок порта Р2 не изменяются.

Чтобы вывести значение «0» или «1» на внешний вывод, необходимо за­писать это значение в соответствующий разряд регистра параллельного порта. Значение появится на внешнем выводе на фазе S1P1 первого ма­шинного цикла следующей команды. Для использования линии порта в качестве входа, ее защелка должна содержать «1». При этом у портов Р1, Р2, Р3 соответствующая линия внутри подтягивается к уровню «1», но может быть внешним источником переведена в состояние «0». Из-за тако­го механизма порты Р1-РЗ называют «квазидвунаправленными».

Порт Р0 элементов постоянного подтягивания к уровню «1» не имеет. За­пись «1» в защелку порта Р0 переводит соответствующую линию в высокоимпедансное состояние, поэтому этот порт является действительно дву­направленным. Верхний транзистор выходного формирователя открыт только при выдаче «1» на линию в качестве бита адреса внешней памяти. При работе порта Р0 на ввод/вывод данных его линии должны быть под­тянуты к уровню «1» внешними резисторами.

Поскольку функция записи «1» и функция чтения для выходного формиро­вателя представляют собой одно и то же состояние с малым выходным

 

Рис. 3.10 - Аппаратные средства, обслуживающие линии портов Р0..Р3

 

током, для ускорения переключения внешних устройств выходные форми­рователи портов обеспечивают в течение первого машинного такта (S1P1-S1P2) увеличенный ток.