ПОРТ ВВОДА/ВЫВОДА D
Для порта D зарезервированы 3 ячейки памяти - регистр PORTD $12 ($32), регистр направления данных - DDRD $11 ($31) и выводы порта D - PIND $10 ($30). Регистры данных и направления данных могут читаться/записываться, ячейка PIND - только для чтения.
Порт D - 7-разрядный двунаправленный порт с встроенными подтягивающими регистрами. Выходные буферы порта могут поглощать ток до 20 mA. Если выводы используются как входы и на них подан низкий уровень, они являются источниками тока Iil, если подключены подтягивающие резисторы. Некоторые из выводов порта имеют альтернативные функции, как показано в таблице 12.1.
Если выводы порта используются для обслуживания альтернативных функций, они должны быть сконфигурированы на ввод/вывод в соответствии с описанием функции.
Таблица 12.1. Альтернативные функции порта D
┌───────────┬────────────────────────────────────────┐
│Вывод порта│Альтернативная функция │
├───────────┼────────────────────────────────────────┤
│ PD0 │ RXD (вход данных UART) │
├───────────┼────────────────────────────────────────┤
│ PD1 │ TXD (выход данных UART) │
├───────────┼────────────────────────────────────────┤
│ PD2 │ INT0 (вход внешнего прерывания 0) │
├───────────┼────────────────────────────────────────┤
│ PD3 │ INT1 (вход внешнего прерывания 1) │
├───────────┼────────────────────────────────────────┤
│ PD4 │ T0 (внешний вход таймера счетчика 0) │
├───────────┼────────────────────────────────────────┤
│ PD5 │ T1 (внешний вход таймера счетчика 1) │
├───────────┼────────────────────────────────────────┤
│ PD6 │ ICP (вход захвата таймера счетчика 1)│
└───────────┴────────────────────────────────────────┘
РЕГИСТР ДАННЫХ ПОРТА D - PORTD
Бит
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
$12 ($32) │ - │PORTD6│PORTD5│PORTD4│PORTD3│PORTD2│PORTD1│PORTD0│
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
Чт./зап. R R/W R/W R/W R/W R/W R/W R/W
Нач.знач. 0 0 0 0 0 0 0 0
РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B - DDRB
Бит
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
$11 ($31) │ - │ DDD7 │ DDD5 │ DDD4 │ DDD3 │ DDD2 │ DDD1 │ DDD0 │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
Чт./зап. R R/W R/W R/W R/W R/W R/W R/W
Нач.знач. 0 0 0 0 0 0 0 0
ВЫВОДЫ ПОРТА B - PINB
Бит
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
$10 ($30) │PIND7 │PIND7 │PIND5 │PIND4 │PIND3 │PIND2 │PIND1 │PIND0 │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
Чт./зап. R R R R R R R R
Нач.знач. Hi-Z Hi-Z Hi-Z Hi-Z Hi-Z Hi-Z Hi-Z Hi-Z
PIND не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта D. При чтении PORTD, читаются данные из регистра-защелки, при чтении PIND читаются логические значения присутствующие на выводах порта.
Порт D, как порт ввода/вывода общего назначения
Бит DDDn регистра DDRD выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTDn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTDn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.
Таблица 12.2. Влияние DDDn на выводы порта D
┌────┬──────┬───────┬───────────┬───────────────────────────────────┐
│DDDn│PORTDn│Вх/Вых │Подт.резист│Комментарий │
├────┼──────┼───────┼───────────┼───────────────────────────────────┤
│0 │0 │Вход │Нет │Третье состояние (Hi-Z) │
├────┼──────┼───────┼───────────┼───────────────────────────────────┤
│0 │1 │Вход │Да │PDn источник тока Iil, если извне │
│ │ │ │ │соединен с землей │
├────┼──────┼───────┼───────────┼───────────────────────────────────┤
│1 │0 │Выход │Нет │Выход установлен в 0 │
├────┼──────┼───────┼───────────┼───────────────────────────────────┤
│1 │1 │Выход │Нет │Выход установлен в 1 │
└────┴──────┴───────┴───────────┴───────────────────────────────────┘
n = 6...0 - номер вывода
Дата добавления: 2016-12-27; просмотров: 1975;