IV. ПАРАЛЛЕЛЬНЫЕ ПОРТЫ ВВОДА/ВЫВОДА МК 8XC196KC/КD
Краткий функциональный обзор

Порты ввода/вывода обеспечивают механизм передачи информации между микроконтроллером и внешними устройствами. 8XC196KC/KD имеет пять 8-разрядных портов для приема и передачи данных, представленных в параллельном формате (P0, P1, P2, P3 и P4). Каждый разряд порта имеет внешний вывод PX.Y, где X - номер порта, а Y - номер разряда порта.

Порты ввода/вывода имеют разряды, которые предназначены:
- или только для приема данных (INPUT);
- или только для передачи данных (OUTPUT);
- квазидвунаправленные (Quasy-Bidirectional);
- двунаправленные с открытым стоком;
- или комбинация четырех перечисленных функций.

Почти все разряды параллельных портов выполняют альтернативные функции. Например, один из выводов порта может стать выходом широтно-импульсного модулятора (Pulse Width Modulator, PWM), в то время как другой может использоваться как аналоговый вход (Analog Channel, ACH0-ACH7). Каждый разряд порта имеет функцию по умолчанию. Однако функция вывода может изменяться при выборе альтернативной функции. Например, при выборе альтернативной функции квазидвунаправленный разряд порта становится выводом только для передачи данных. Конкретная функция порта ввода/вывода программируется в соответствующем управляющем регистре специальных функций (Special Funktion Register, SFR).

В любом случае разряд имеет базисный набор характеристик работы, связанных с данной конфигурацией. В таблице 4.1 приведены пять портов ввода/вывода (P0,P1,P2,P3,P4), их альтернативные функции и функции по умолчанию. Пятый столбец таблицы 4.1 указывает регистр специальных функций, который определяет, как функционирует разряд:
- или как вывод параллельного порта;
- или выполняет альтернативную функцию.

Некоторые разряды эксплуатируются и как выводы порта, и выполняют альтернативные функции одновременно (например, порт 0 и аналоговые входы). В этом случае пятый столбец таблицы 4.1 оставлен пустым.

Кроме стандартных портов дополнительные функции ввода/вывода могут обеспечивать модуль быстрого ввода (HSI) и модуль быстрого вывода (HSO).

Таблица 4.1

Функции разрядов параллельных портов

No разряда портаПредназначениеАльтернативная функцияПредназначение по умолчаниюРегистр специальных функций
P0InputACH0-ACH7Input-
P1.0, P1.1, P1.2Quasi-BidirectionalNone--
P1.3, P1.4Quasi-BidirectionalPWM1, PWM2OutputIOC3
P1.5, P1.6Quasi-BidirectionalBREQ , HLDA OutputWSR
P1.7Quasi-BidirectionalHOLDInputWSR
P2.0OutputTXDOutputIOC1
P2.1InputRXDInput or OutputSPCON
P2.2InputEXTINTInputIOC1
P2.3InputT2CLKInputIOC0
P2.4InputT2RSTInputIOC0
P2.5OutputPWM0OutputIOC1
P2.6Quasi-BidirectionalT2UP-DNInputIOC2
P2.7Quasi-BidirectionalT2CAPTUREQuasi-Bidirectional-
P3, P4Open-Drain BidirectionalAD0-AD15--

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

Разряды порта ввода

Любой разряд порта, предназначенный для приема данных, может только читаться. Любая операция записи игнорируется (или невозможна). Общая схема разряда порта ввода состоит из регистра-защелки и буфера чтения (см. рис. 4.1).

Рис. 4.1. Схема разряда порта ввода

Разряд порта выбирается за одно временное состояние до того, как разрешается чтение из буфера. Выборка и распознавание значения разряда (0 или 1) происходит в течение фазы 1 (пока CLKOUT=0) до того, как оно подается на внутреннюю шину. Если во время выборки происходят изменения значения разряда, новое значение может быть записано (а может и не записываться) во время чтения. Разряды порта ввода не имеют никаких выходных драйверов (формирователей, усилителей, устройств).

Разряды порта вывода

Разряд порта вывода состоит из регистра-защелки и схемы управления внешним выводом (Q1,Q2,Q3) (см. рис. 4.2). Новое значение разряда порта вывода защелкивается в течение фазы 1 (пока CLKOUT=0). Значение разряда остается устойчивым до того, пока его не изменит другая операция записи (или пока не произойдет сброс устройства). Разряды порта вывода не имеют схем выборки и схем чтения буфера. При чтении разряда его значение не определено и должно маскироваться. Поскольку нет никакого механизма чтения значения разряда порта вывода, то возможна только его установка или очистка. Если необходимо инвертировать значение разряда, его образ должен храниться в памяти. Этот образ в памяти используется при установке или очистке разряда.

Рис. 4.2. Схема разряда порта вывода

Разряды квазидвунаправленного порта

Квазидвунаправленные разряды могут использоваться как для ввода, так и для вывода (схемы управления направлением не требуется). На внешних выводах этих разрядов формируют сигнал с низким уровнем напряжения и с большой силой тока (сильноточный) или сигнал с высоким уровнем напряжения и с малой силой тока (слаботочный). Слаботочный сигнал высокого уровня можно внешне изменить (на 0), обеспечивая функции ввода. На рис. 4.3 приведена схема разряда квазидвунаправленного порта.

Подобно разряду порта ввода разряд квазидвунаправленного порта имеет регистр-защелку и буфер чтения. Подобно разряду порта вывода, он имеет регистр-защелку порта. Именно структура выходного драйвера (Q1,Q2,Q3,Q4) делает квазидвунаправленный контакт уникальным.

Рис. 4.3. Схема разряда квазидвунаправленного порта

Внешний вывод разряда контакта может иметь только два статических значения: сильноточное низкое (0) или слаботочное высокое (1).

Запись нуля в разряд порта разрешает работу сильноточного низкого драйвера (транзистор Q2 открыт), и поэтому изменить значение разряда с 0 на 1 невозможно.

Запись единицы в разряд порта отключает сильноточный низкий драйвер (транзистор Q2 закрыт) и открывает очень слаботочный драйвер высокого уровня сигнала (Q3). Для того, чтобы быстро получить вывод высокого значения, сильноточный высокий драйвер (Q1) допускается в течение одного временного состояния и затем блокируется (активным остается только Q3).

Способность перевозбуждать (изменять 1 на 0) слаботочный драйвер вывода - это то, что дает разряду квазидвунаправленного порта возможность ввода.

Так как разряд квазидвунаправленного порта имеет схему чтения, возможно непосредственно читать его значение (в отличие от разрядов порта вывода). Однако так как вывод порта может внешне изменяться на нуль, его чтение может ложно указать на то, что в разряд был записан нуль.

Внешний вывод разряда квазидвунаправленного порта также содержит нагрузочный драйвер (Q3), который включается всякий раз, когда в регистр-защелку разряда записывается единица. Этот нагрузочный драйвер обеспечивает очень маленький ток, который заставляет вывод из высокоимпедансного состояния переходить к высокому (единичному) значению.

Разряды двунаправленного порта c открытым стоком

Разряды двунаправленного порта с открытым стоком функционируют подобно разрядам квазидвунаправленного порта, за исключением того, что нет никаких сильноточных или слаботочных высоких драйверов. На рис. 4.4 приведена схема разряда двунаправленного порта с открытым стоком.

Рис. 4.4. Схема разряда двунаправленного порта с открытым стоком

Запись нуля в регистр-защелку порта допускает сильноточный низкий драйвер (Q1). Пока Q1 активен, невозможно извне перевозбудить нуль без того, чтобы не нарушить работу устройства. Единица, записанная в регистр-защелку порта, отключает Q1 и переводит вывод порта в высокоимпедансное состояние.

Внешне вывод порта может управляться высоким уровнем сигнала с помощью нагрузочного резистора или логического ключа.

<<< Содержание >>>