Обращение к портам производится через регистры ввода/вывода, причем под каждый порт в адресном пространстве ввода/вывода зарезервировано по 3 адреса. По этим адресам размещаются три регистра. Для порта А этими регистрами являются: регистр данных порта PORTА, регистр направления данных DDRА и регистр выводов порта PINА. Положение этих регистров в адресном пространстве ввода/вывода приведено в разделе 16. При сбросе микроконтроллера регистры DDRА и PORTА очищаются, а все выводы портов после сброса устанавливаются в третье состояние.
Следует заметить, что «регистры» PINА (PINB и.т.д) на самом деле регистрами не являются, по этим адресам осуществляется доступ к физическим значениям сигналов на выводах порта. Соответственно, они доступны только для чтения, тогда как регистры PORTА и DDRА доступны и для чтения, и для записи.
Таким образом, запись в порт означает запись требуемого состояния для каждого вывода порта в соответствующий регистр данных порта PORTx. А чтение состояния порта выполняется чтением либо регистра данных порта PORTx, либо регистра выводов порта PINx. При чтении регистра выводов порта PINx происходит считывание логических уровней сигналов, присутствующих на выводах порта. А при чтении регистра данных порта PORTx происходит считывание данных, находящихся в регистре-защелке порта. Причем сказанное справедливо как для входных, так и для выходных контактов.
|
|
Рисунок 5.1 - Упрощенная схема одного канала порта ввода/вывода
На рис. 5.1 приведена структурная схема одного из каналов порта ввода/вывода. На схеме имеются следующие обозначения:
WP: Запись в PORTA
WD: Запись в DDRA
RL: Чтение регистра-защелки порта
RP: Чтение состояния вывода порта
RD: Чтение регистра DDRA