ПОРТЫ ВВОДА-ВЫВОДА

9.1. Организация ввода/вывода

 

Порты ввода-вывода обеспечивают ввод и вывод данных в параллельном формате. Обычно порты ввода-вывода выполняются 8-разрядными. В режиме ввода данные с внешних контактов порта пересылаются в регистры микроконтроллера. В режиме вывода данные из регистров перемещаются на контакты микроконтроллера. Вывод данных, как правило, производится в «защелку» порта. Данные при этом присутствуют на выходных контактах до новой операции вывода в этот порт. В системе команд микроконтроллера для ввода и вывода данных обычно предусматриваются специальные команды.

 

В зависимости от выполняемых функций порты могут быть:

0 однонаправленными, предназначенными только для выполнения одной из

операций (ввод или вывод) по всем линиям;

0 двунаправленными, предназначенными для выполнения любой из операций ввода-вывода по всем линиям одновременно; направление передачи может быть изменено программно в процессе работы;

0 с индивидуальной настройкой линий; направление передачи данных по каждой линии программируется независимо от остальных. Последний вариант построения схемы порта в настоящее время наиболее распространен. Например, микроконтроллер АТтеgа163 имеет 32 линии ввода-вывода с индивидуальной настройкой, сгруппированных в 4 параллельных порта: порт А порт В, порт С, порт D. Направление передачи данных любого вывода любого порта может быть изменено независимо от направлений других выводов. Для работы с портами в микроконтроллере предусмотрено 12 регистров, по три на каждый из портов (рис. 5.8):

0 регистры данных (Data Register): PORTA , PORTB, PORTC и PORTD;

0 регистры направления (Data Direction Register): DDRA, DDRB, DDRC и DDRD;

0 регистры входных контактов (Port A Input Pins): PINA; PINB, PINC и PIND.

Все выводы портов имеют индивидуальные подтятвающие резисторы (pull-up resistors). Для подключения этих резисторов в регистре специальных функций ввода/вывода SFIOR (Special Function Input Output Register) предусмотрен бит PUD (Pull-up Disabled).

 

 
 

 

 


Рис. 9.1. Регистры портов ввода/вывода

 

Любая линия порта выполняет функции выхода при записи логической единицы в соответствующий бит регистра направления DDRx (x ∈ A, B, C, D).

Регистры PINx не хранят информацию и фактически не являются настоящими регистрами. Они разрешают доступ к физическим сигналам на линиях соответствующего порта. При чтении PORTx читается защелка данных выбранного порта, а при чтении PINx- значение на контактах порта. Регистры PINx доступны только для чтения, в то время как регистры PORTx и DDRx -для чтения и записи.

Внутренние подтягивающие резисторы подключаются только при PUD=0, если контакты портов сконфигурированы как входы.

Выходы портов выдерживают втекающий ток до 20mA и могут быть непосредственно подключены к светодиодным индикаторам. Однако, вытекающий ток порта не должен быть более 4 мА, а суммарная загрузка порта - не более 80 мА.