Микропроцессоры

Устройство параллельных портов микроконтроллеров MCS-48

Порты P1, P2 являются квазидвунаправленными портами ввода - вывода и предназначены для обеспечения обмена информацией микроконтроллера с внешними устройствами, образуя 16 линий ввода- вывода. Каждый из портов содержит восьмиразрядный регистр, позволяющий устанавливать (запись '1') или сбрасывать (запись '0') любой разряд этого регистра с помощью программного обеспечения. Выходы регистров квазидвунаправленного порта соединены с внешними ножками микросхемы. Упрощенная схема одного разряда порта показана на рисунке 1

При записи в разряд порта (в триггере Т) логического '0' выходной транзистор открывается и на выводе микросхемы появляется низкий потенциал, изменить который извне невозможно. Поэтому при опросе ножки микросхемы входная информация в этом случае всегда будет восприниматься как логический '0' независимо от состояния выходов внешних устройств. Если в указанный разряд записать логическую '1', то выходной транзистор закрывается и на выводе микросхемы появляется высокий потенциал за счет генератора тока. Он может извне изменен на нулевой потенциал (замыканием этой ножки микросхемы на корпус). В этом случае, считываемая микроконтроллером информация, будет соответствовать информации на выходе внешнего устройства. Поэтому, перед тем как осуществить ввод информации по какому-либо выводу порта, соответствующий разряд необходимо настроить на ввод - записать в него логическую '1'.

Рисунок 1. Упрощенная схема одного бита порта.

Один разряд регистра - защелки порта представляет собой D-триггер. Данные с внутренней шины микроконтроллера записываются в регистр-защелку по сигналу "запись в защелку". Значение сигнала с внешнего вывода порта считывается по сигналу "чтение вывода". При чтении ножки микросхемы осуществляется операция логического "И" между сигналом на ножке микросхемы и содержимым триггера квазидвунаправленного порта. Поэтому перед чтением ножки микросхемы необходимо записать в соответствующий разряд порта логическую единицу. Чтение внешних ножек микросхемы осуществляется командами:
IN A, P1      ;Скопировать состояние ножек порта P1 в аккумулятор
IN A, P2      ;Скопировать состояние ножек порта P2 в аккумулятор

Вывод информации через параллельные порты осуществляется командами:

OUTL P1, A   ;Скопировать содержимое аккумулятора в порт P1
OUTL P2, A   ;Скопировать содержимое аккумулятора в порт P2

При выводе информации обычно требуется работать с каждым битом порта отдельно. Так как при считывании значения порта на самом деле будет считываться напряжение на внешней ножке микросхемы, то для модификации кода, записываемого в порт нужно хранить его копию во внутренней памяти микроконтроллера. Модификация обычно производится при помощи операции маскирования с использованием команд ORL и ANL.

Порты микросхемы служат для управления внешними устройствами, подключенными к микроконтроллеру. Схема подключения простейших внешних устройств приведена на рисунке 2. Этот рисунок иллюстрирует особенности подключения индикаторов к параллельным портам микроконтроллера MCS-48.

Рисунок 2. Схема подключения светодиодных индикаторов к параллельному порту.

Присутствие в схеме мощного транзистора позволяет подключать к выводам порта светодиодные индикаторы непосредственно без усилителя мощности. Однако при этом необходимо следить за максимальной допустимой мощностью, рассеиваемой на микросхеме и напряжением, подаваемом на светодиод. Эквивалентная схема, на которой показан путь протекания выходного тока порта приведена на рисунке 3. Как видно из этой схемы именно этот ток используется для зажигания светодиода.

Рисунок 3. Эквивалентная схема подключения светодиодного индикатора к параллельному порту.

Для умощнения выводов порта можно применить транзисторный ключ, показанный на рисунке 2. Обратите внимание, что база транзистора подключена непосредственно к выводу порта. Это стало возможным только благодаря использованию в схеме порта генератора тока в верхнем плече выходного каскада (Схему подключения устройств к портам с TTL выходами можно посмотреть здесь). Если выходного тока достаточно для открывания транзисторного ключа, то резистор R2 не используется. Этот резистор подключается для увеличения базового тока транзисторного ключа. На максимальное значение тока через этот резистор накладываются те же ограничения, что и для непосредственного подключения светодиодного индикатора к выводам порта.

Это были рассмотрены схемотехнические особенности применения параллельных портов. Однако управлять напряжением на выходе параллельного порта микроконтроллера можно только при помощи программы. В приведЈнной на рисунке 2 схеме, для зажигания светодиода VD1, в шестой вывод порта P0 необходимо записать логический 0. Для зажигания светодиода VD2 необходимо в седьмой разряд порта P2 записать логическую единицу.

Для записи числа в порт (изменения потенциалов на ножках микросхемы) можно воспользоваться следующими способами:

  1. OUTL (выдача в порт константы), например 

  2.  MOV  A, #56h        ;Установить единичный сигнал на ножках 1,2,4 и 6 порта P2 
     OUTL P2, A          ;и нулевой потенциал на ножках 0,3,5 и 7
    
     MOV  A, #01110011b  ;Выдать на все восемь выводов порта P1
     OUTL P1, A          ;двоичное число 01110011
  3. ANL (использование логического 'И' для обнуления выбранных маской бит), например:

  4.  MOV  A, 56          ;Занести в аккумулятор копию порта P1
     ANL P1, #11110011b  ;сформировать низкий потенциал на ножках P1.2 и P1.3
     OUTL P1, A          ;записать новое значение в порт P1
  5. XRL (использование операции исключающее 'ИЛИ' для инвертирования выбранных бит), например

  6.  MOV  A, 56          ;Занести в аккумулятор копию порта P1
     XRL  A, #01000010b  ;инвертировать состояние ножек P1.1 и P1.6
     OUTL P1, A          ;записать новое значение в порт P1
  7. ORL (использование операции логическое 'ИЛИ' для записи единиц в выбранные биты), например
  8.  MOV  A, 56          ;Занести в аккумулятор копию порта P1
     ORL  A, #00100001b  ;выдать высокий потенциал на ножках P1.0 и P1.5
     OUTL P1, A          ;записать новое значение в порт P1

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

Порт P1. Этот квазидвунаправленный порт никаких особенностей не имеет. При сбросе микросхемы во все разряды порта P2 записываются '1'.

Sx_Proc.gif (12875 bytes)

Рисунок 4. Подключение внешней памяти программ и памяти данных.

  • Порт P2. Младшая тетрада порта может быть использована для передачи старших четырЈх бит адреса при работе с внешней памятью программ и внешней памятью данных (с 12- разрядным адресом). Схема использования порта P2 в качестве шины адреса приведена на рисунке 4. При сбросе микросхемы во все разряды порта P2 записываются '1'. Кроме того через младшие четыре разряда порта 2 могут быть использованы для подключения микросхемы расширителя портов.

  • Порт D/A. Может быть использован для стробируемого вывода данных. Стробирование данных производится сигналом WR. Над этим портом возможно выполнение логических операций, что может сократить длину программ, приведЈнных выше, до одной команды.


[ Назад] [ Содержание] [ Вперёд]