![]() |
|
IV. ПАРАЛЛЕЛЬНЫЕ ПОРТЫ ВВОДА/ВЫВОДА МК 8XC196KC/КD
|
No разряда порта | Предназначение | Альтернативная функция | Предназначение по умолчанию | Регистр специальных функций |
P0 | Input | ACH0-ACH7 | Input | - |
P1.0, P1.1, P1.2 | Quasi-Bidirectional | None | - | - |
P1.3, P1.4 | Quasi-Bidirectional | PWM1, PWM2 | Output | IOC3 |
P1.5, P1.6 | Quasi-Bidirectional | BREQ , HLDA | Output | WSR |
P1.7 | Quasi-Bidirectional | HOLD | Input | WSR |
P2.0 | Output | TXD | Output | IOC1 |
P2.1 | Input | RXD | Input or Output | SPCON |
P2.2 | Input | EXTINT | Input | IOC1 |
P2.3 | Input | T2CLK | Input | IOC0 |
P2.4 | Input | T2RST | Input | IOC0 |
P2.5 | Output | PWM0 | Output | IOC1 |
P2.6 | Quasi-Bidirectional | T2UP-DN | Input | IOC2 |
P2.7 | Quasi-Bidirectional | T2CAPTURE | Quasi-Bidirectional | - |
P3, P4 | Open-Drain Bidirectional | AD0-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), который включается всякий раз, когда в регистр-защелку разряда записывается единица. Этот нагрузочный драйвер обеспечивает очень маленький ток, который заставляет вывод из высокоимпедансного состояния переходить к высокому (единичному) значению.
Разряды двунаправленного порта с открытым стоком функционируют подобно разрядам квазидвунаправленного порта, за исключением того, что нет никаких сильноточных или слаботочных высоких драйверов. На рис. 4.4 приведена схема разряда двунаправленного порта с открытым стоком.
Рис. 4.4. Схема разряда двунаправленного порта с открытым стоком
Запись нуля в регистр-защелку порта допускает сильноточный низкий драйвер (Q1). Пока Q1 активен, невозможно извне перевозбудить нуль без того, чтобы не нарушить работу устройства. Единица, записанная в регистр-защелку порта, отключает Q1 и переводит вывод порта в высокоимпедансное состояние.
Внешне вывод порта может управляться высоким уровнем сигнала с помощью нагрузочного резистора или логического ключа.