Устройство параллельных портов микроконтроллеров 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. Как видно из этой схемы именно этот ток используется для зажигания светодиода.
Рисунок 2. Эквивалентная схема подключения светодиодного индикатора к параллельному порту.
Для умощнения выводов порта можно применить транзисторный ключ, показанный на рисунке 2. Обратите внимание, что база транзистора подключена непосредственно к выводу порта. Это стало возможным только благодаря использованию в схеме порта генератора тока в верхнем плече выходного каскада (Схему подключения устройств к портам с TTL выходами можно посмотреть здесь). Если выходного тока достаточно для открывания транзисторного ключа, то резистор R2 не используется. Этот резистор подключается для увеличения базового тока транзисторного ключа. На максимальное значение тока через этот резистор накладываются те же ограничения, что и для непосредственного подключения светодиодного индикатора к выводам порта.
Это были рассмотрены схемотехнические особенности применения параллельных портов. Однако управлять напряжением на выходе параллельного порта микроконтроллера можно только при помощи программы. В приведЈнной на рисунке 2 схеме, для зажигания светодиода VD1, в шестой вывод порта P0 необходимо записать логический 0. Для зажигания светодиода VD2 необходимо в седьмой разряд порта P2 записать логическую единицу.
Для записи числа в порт (изменения потенциалов на ножках микросхемы) можно воспользоваться командами с байтовой адресацией:
MOV (пересылка), например
ANL (логическое 'И'), например
XRL (исключающее 'ИЛИ'), например
- ORL (логическое 'ИЛИ'), например
MOV P2, #56h ;Установить единичный сигнал на ножках 1,2,4 и 6 порта P2 ;и нулевой потенциал на ножках 0,3,5 и 7 MOV P1, #01110011b ;Выдать на все восемь выводов порта P1 число 011100112 MOV P3, A ;Выдать на все восемь выводов содержимое аккумулятора
ANL P1, #11110011b ;выдать низкий потенциал на ножках P1.2 и P1.3
XRL P3, #01000100b ;инвертировать состояние ножек P3.2 и P3.6
ORL P1, #00001100b ;выдать высокий потенциал на ножках P1.2 и P1.3
Эти команды изменяют потенциал сразу на нескольких выводах порта. Кроме того, для изменения потенциалов на ножках микросхемы, можно воспользоваться командами с битовой адресацией:
-
MOV (пересылка), например
CPL (инверсия), например
SETB (установить бит), например
CLR (сбросить бит), например
MOV P1.2, C ;выдать содержимое бита переноса через 2-й бит порта P2
CPL P1.2 ;проинвертировать второй бит порта P2
SETB P2.3 ;выдать высокий потенциал на 3-й ножке порта P2
CLR P2.3 ;выдать низкий потенциал на 3-й ножке порта P2
При записи в разряд порта (в триггере Т) логического '0' выходной транзистор открывается и на выводе микросхемы появляется низкий потенциал, изменить который извне невозможно. Поэтому при опросе ножки микросхемы входная информация в этом случае всегда будет восприниматься как логический '0' независимо от состояния выходов внешних устройств. Если в указанный разряд записать логическую '1', то выходной транзистор закрывается и на выводе микросхемы появляется высокий потенциал за счет генератора тока. Он может извне изменен на нулевой потенциал (замыканием этой ножки микросхемы на корпус). В этом случае, считываемая микроконтроллером информация, будет соответствовать информации на выходе внешнего устройства. Поэтому, перед тем как осуществить ввод информации по какому-либо выводу порта, соответствующий разряд необходимо настроить на ввод - записать в него логическую '1'.
По той же причине при настройке выводов порта на выполнение альтернативных функций в соответствующие разряды должны быть записаны логические '1'.
Кроме работы в качестве обычных портов ввода - вывода, внешние выводы портов Р0 .. Р3 могут выполнять ряд дополнительных (альтернативных) функций:
Порт P0 может быть использован для организации шины данных при работе микроконтроллера с внешней памятью данных или программ, при этом через него выводится младший байт адреса A0 - A7 выдается из микроконтроллера и принимается в микроконтроллер байт данных. Во время доступа к внешней памяти во все триггеры - защелки порта P0 аппаратно записываются "1" (т.е. содержимое порта теряется). Кроме того, через порт P0 передаюься данные при программировании внутреннего ППЗУ, и читается содержимое внутренней памяти программ при работе с программатором. При сбросе микросхемы во все разряды порта записываются '1'. Схема порта P0 отличается от всех других портов тем, что у этого порта нет внутреннего генератора тока. Поэтому при работе с этим портом приходится подключать внешние резисторы.
Рисунок 2. Использование порта P0 в качестве шины данных.
Порт P1 может быть использован для чтения внутренней памяти программ или для передачи младшего байта адреса при программировании внутреннего РПЗУ. В младших моделях микроконтроллера семейства других альтернативных функций у порта P1 нет. При сбросе микросхемы во все разряды порта записываются '1'.
- жирным подчеркнутым текстом - присутствуют во всех микросхемах
- жирным текстом - отсутствуют в микросхемах 8051,8031, КР1816ВЕ31, КР1816ВЕ51, КР1816ВЕ751 КР1830ВЕ31, КР1830ВЕ51, КР1830ВЕ751;
- курсивом - присутствуют только в микросхемах 8Х51FA, FB, FC и GB
Порт P2 может быть использован для передачи старшего байта адреса при программировании внутреннего ППЗУ и при чтении внутренней памяти программ. Через порт Р2 выводится старший байт адреса А8 - А15 при работе с внешней памятью программ и внешней памятью данных (с 16- разрядным адресом). Во время доступа к внешней памяти содержимое регистра - защелки порта P2 не изменяется. Схема использования порта P2 в качестве шины адреса приведена на рисунке 2. При сбросе микросхемы во все разряды порта P2 записываются '1'.
Порт P3. Каждая линия порта Р3 имеет индивидуальную альтернативную функцию, которая может быть задействована простым обращением к устройству, соединенному с ножкой порта (например, для того чтобы был выработан строб WR, достаточно обратиться с внешней памяти командой MOVX @DPTR, A или MOVX @R0,A). Линии порта Р3 могут выполнять альтернативные функции только в том случае, если в соответствующие этим линиям разряды регистра записаны логические '1', иначе на линиях порта будет присутствовать '0' независимо от характера принимаемой или передаваемой информации. При сбросе микросхемы во все разряды порта записываются '1'.
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
Примечание: альтернативные функции, выделенные:
Р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 - строб чтения из внешней памяти данных.
[Назад] [Содержание] [Вперёд]