Обращение к портам ввода/вывода
Упрощенная структурная схема элемента ввода/вывода приведена на рисунке 3.3. Здесь DDRx - бит контроля направления передачи данных и привязки вывода к шине питания (VCC), PORTx - бит привязки вывода к VCC и бит выходных данных, PINx - бит для отображения логического уровня сигнала на физическом выводе микросхемы. На рисунке 3.4, в качестве примера приведена структурная схема первого разряда порта D (PD1) микроконтроллера AT90S4434. Обращение к портам производится через регистры ввода/вывода, причем под каждый порт в адресном пространстве ввода/вывода зарезервировано по 3 адреса (таблица 3.2). По этим адресам размещаются три регистра - регистр данных порта PORTx, регистр направления данных DDRx и регистр выводов порта PINx. Разряды этих регистров имеют названия Рх7...РхО – для регистров PORTx, DDx7...DDxO – для регистром DDRx и PINx7...PINxO – для регистров PINx. Действительные названия регистров (и их разрядов) получаются подстановкой названия порта вместо символа «х», соответственно для порта А регистры называют PORTA, DDRA, PINA, для порта В – PORTB, DDRB, PINB и т.д. Положение этих регистров в адресном пространстве ввода/вывода приведено в таблице 3.2. При сбросе микроконтроллера регистры DDRx и PORТх очищаются, а все выводы портов после сброса устанавливаются в третье состояние.
DDRx - бит контроля направления передачи данных и привязки вывода к шине питания (VCC); PORTx - бит привязки вывода к VCC и бит выходных данных; PINx - бит отображения логического уровня сигнала на физическом выводе микросхемы Рисунок 3.3 – Структура разряда порта ввода/вывода
Следует заметить, что регистры PINx на самом деле регистрами не являются, по этим адресам осуществляется доступ к физическим значениям сигналов на выводах порта. Соответственно, они доступны только для чтения, тогда как регистры PORTx и DDRx доступны и для чтения, и для записи. А в микроконтроллере АТ90С8534 регистр выводов порта вообще отсутствует, т.к. единственный порт этой модели является только портом вывода.
WP – Запись в PORTD; WD –Запись в DDRD; RL –Чтение регистра-защелки порта; RP –Чтение состояния вывода порта; RD –Чтение регистра DDRD; TXD – UАRТ.передаваемые данные; TXEN– UART разрешение передачи Рисунок 3.4 – Структурная схема канала PD1 микроконтроллера AT90S4434
Порядковый номер вывода порта соответствует, разумеется, порядковому номеру разряда регистров этого порта. Поэтому если разрядность порта меньше восьми, в регистрах порта используется соответствующее число младших разрядов. Незадействованные старшие разряды регистров доступны только для чтения и всегда содержат "0". Таким образом, запись в порт означает запись требуемого состояния для каждого вывода порта в соответствующий регистр данных порта РORTx. А чтение состоянии порта выполняется чтением либо регистра данных порта PORTx, либо регистра выводов порта PINx. При чтении регистра выводов порта PINx происходит считывание логических уровней сигналов, присутствующих на выводах порта. А при чтении регистра данных порта PORTx происходит считывание данных, находящихся в регистре защелке порта. Причем сказанное справедливо как для входных, так и для выходных контактов. Контрольное чтение состояния выводов порта PINx после записи в порт (запись в регистр PORTx) необходимо выполнить с задержкой, учитывающей емкостную нагрузку на выводах порта. Это можно выполнить с помощью одной или двух команд пустых команд NOP.
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Почему стероиды повышают давление?: Основных причин три... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (335)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |