Дата последнего обновления файла 23.10.2009

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

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

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

Один разряд регистра-защелки порта представляет собой D-триггер. Данные с внутренней шины микроконтроллера записываются в регистр-защелку по сигналу "запись в защелку". Выход "Q" D-триггера подключается к внутренней шине (считывается) по сигналу "чтение защелки". Значение сигнала непосредственно с внешнего вывода порта считывается по сигналу "чтение вывода". Некоторые команды чтения порта используют сигнал "чтение защелки ", другие "чтение выода". Чтение внешних ножек микросхемы осуществляется командами:

MOV A, P3      ;Скопировать состояние ножек порта P3 в аккумулятор
JB P3.4, Metka ;Если на 4 ножке порта P3 логическая ‘1’, то перейти на метку

Чтение регистра - защелки осуществляется командами чтение - модификация - запись. Например:

 CPL P3.1    ;Проинвертировать сигнал на первой ножке порта P3
 ORL P2,#56h ;Установить единичный сигнал на ножках 1,2,4 и 6 порта P2
 ANL P3,#03h ;Установить нулевой сигнал на ножках 0 и 1 порта P3

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

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

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

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

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

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

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

  1. MOV (пересылка), например 

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

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

  6.  XRL P3, #01000100b ;инвертировать состояние ножек P3.2 и P3.6
  7. ORL (логическое 'ИЛИ'), например
  8.  ORL P1, #00001100b ;выдать высокий потенциал на ножках P1.2 и P1.3

Эти команды изменяют потенциал сразу на нескольких выводах порта. Кроме того, для изменения потенциалов на ножках микросхемы, можно воспользоваться командами с битовой адресацией:

  1. MOV (пересылка), например

  2.  MOV P1.2, C         ;выдать содержимое бита переноса через 2-й бит порта P2
  3. CPL (инверсия), например

  4.  CPL P1.2            ;проинвертировать второй бит порта P2
  5. SETB (установить бит), например

  6.  SETB P2.3           ;выдать высокий потенциал на 3-й ножке порта P2
  7. CLR (сбросить бит), например

  8. CLR P2.3             ;выдать низкий потенциал на 3-й ножке порта P2

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

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

Кроме работы в качестве обычных портов ввода-вывода, внешние выводы портов Р0 .. Р3 могут выполнять ряд дополнительных (альтернативных) функций:

  • Порт P0 может быть использован для организации шины данных при работе микроконтроллера с внешней памятью данных или программ, при этом через него выводится младший байт адреса A0 - A7, выдается из микроконтроллера или принимается в микроконтроллер байт данных. Во время доступа к внешней памяти  во все   триггеры - защелки порта P0 аппаратно записываются "1" (т.е. содержимое порта теряется). Кроме того, через порт P0 передаюься данные при программировании внутреннего ППЗУ, и читается содержимое внутренней памяти программ при работе с программатором. При сбросе микросхемы во все разряды порта записываются '1'. Схема порта P0 отличается от всех других портов тем, что у этого порта нет внутреннего генератора тока. Поэтому при работе с этим портом приходится подключать внешние резисторы.

  • P0.gif (2948 bytes)

Схема использования порта P0 в качестве шины данных приведена на рисунке 3.

Sx_Proc.gif (12875 bytes)

Рисунок 3. Использование порта P0 в качестве шины данных.

  • Порт P1 может быть использован для чтения внутренней памяти программ или для передачи младшего байта адреса при программировании внутреннего РПЗУ. В младших моделях микроконтроллера семейства других альтернативных функций у порта P1 нет. При сбросе микросхемы во все разряды порта записываются '1'.

  • P1.gif (2890 bytes)

    P1.0 T2 -внешний вход таймера/счетчика 2
    P1.1 T2EX -вход управления перезагрузки/захвата таймера
    P1.2 ECI - внешний вход набора программируемых счетчиков (РСА)
    P1.3 CEX0 -внешний вход/выход для вывода ШИМ или сравнения/захвата модуля 0
    P1.4 CEX1 -внешний вход/выход для вывода ШИМ или сравнения/захвата модуля 0
    P1.5 CEX2 -внешний вход/выход для вывода ШИМ или сравнения/захвата модуля 0
    P1.6 CEX3 -внешний вход/выход для вывода ШИМ или сравнения/захвата модуля 0
    P1.7 CEX4 -внешний вход/выход для вывода ШИМ или сравнения/захвата модуля 0

    Примечание: альтернативные функции, выделенные:

    1. жирным подчеркнутым текстом - присутствуют во всех микросхемах
    2. жирным текстом - отсутствуют в микросхемах 8051,8031, КР1816ВЕ31, КР1816ВЕ51, КР1816ВЕ751 КР1830ВЕ31, КР1830ВЕ51, КР1830ВЕ751;
    3. курсивом - присутствуют только в микросхемах 8Х51FA, FB, FC и GB
  • Порт P2 может быть использован для передачи старшего байта адреса при программировании внутреннего ППЗУ и при чтении внутренней памяти программ. Через порт Р2 выводится старший байт адреса А8 - А15 при работе с внешней памятью программ и внешней памятью данных (с 16- разрядным адресом). Во время доступа к внешней памяти содержимое регистра - защелки порта P2 не изменяется. Схема использования порта P2 в качестве шины адреса приведена на рисунке 2. При сбросе микросхемы во все разряды порта P2 записываются '1'.

  • P2.gif (2827 bytes)
  • Порт P3. Каждая линия порта Р3 имеет индивидуальную альтернативную функцию, которая может быть задействована простым обращением к устройству, соединенному с ножкой порта (например, для того чтобы был выработан строб WR, достаточно обратиться с внешней памяти командой MOVX @DPTR, A или MOVX @R0,A). Линии порта Р3 могут выполнять альтернативные функции только в том случае, если в соответствующие этим линиям разряды регистра записаны логические '1', иначе на линиях порта будет присутствовать '0' независимо от характера принимаемой или передаваемой информации. При сбросе микросхемы во все разряды порта записываются '1'.

  • P3.gif (2784 bytes)

    Р3.0 RxD - вход последовательного порта;
    Р3.1 TxD - выход последовательного порта;
    Р3.2 INT0 -используется как вход 0 внешнего запроса прерываний;
    Р3.3 INT1 -используется как вход 1 внешнего запроса прерываний;
    Р3.4 Т0 - используется как вход счетчика внешних событий 0;
    Р3.5 Т1 - используется как вход счетчика внешних событий 1;
    Р3.6 WR - строб записи во внешнюю память данных;
    Р3.7 RD - строб чтения из внешней памяти данных.

Литература:

  1. Боборыкин А.В., Липовецкий Г.П., и др. Однокристальные микроЭВМ М.: Бином 1994
  2. В.В. Сташин, А.В. Урусов, О.Ф. Мологонцева Проектирование цифровых устройств на однокристальных микроконтроллерах М.: Энергоатомиздат 1990
  3. Карасев Однокристальный микропроцессор семейства MCS-51 М.: 1995
  4. Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики М.: ЭКОМ 2001
  5. Микушин А.В. Сединин В.И. Однокристальный микроконтроллер семейства MCS-51 фирмы INTEL 8xC51GB Новосибирск: СибГУТИ, 2001
  6. Микушин А.В. Занимательно о микроконтроллерах. СПб, БХВ-Петербург, 2006.
  7. Микушин А.В., Сажнев А.М., Сединин В.И. Цифровые устройства и микропроцессоры. СПб, БХВ-Петербург, 2010.

Вместе со статьей "Архитектура микроконтроллеров MCS-51" читают:

Состав семейства MCS-51
http://digteh.ru/MCS51/tablms.php

Архитектура микроконтроллеров MCS-51
http://digteh.ru/MCS51/MCS_51.php

Система команд микроконтроллеров MCS-51
http://digteh.ru/MCS51/SysInstr.php

Построение памяти микроконтроллеров семейства MCS-51
http://digteh.ru/MCS51/pam_cntr.php

Устройство таймеров микроконтроллеров MCS-51
http://digteh.ru/MCS51/timers.php

Последовательный порт микроконтроллера 8051
http://digteh.ru/MCS51/PoslPort.php


Автор Микушин А. В. All rights reserved. 2001 ... 2017

Предыдущие версии сайта:
http://neic.nsk.su/~mavr
http://digital.sibsutis.ru/

Поиск по сайту сервисом Яндекс

Поиск по сайту сервисом ГУГЛ

пЕИРХМЦ@Mail.ru


Rambler's Top100