2.8 Порты ввода/вывода

Порт B

Порт B 8-разрядный двунаправленный порт ввода/вывода. Для обслуживания порта отведено три регистра: регистр данных PORTB ($18, $38), регистр направления данных - DDRB ($17, $37) и ножки порта B ($16, $36). Адрес ножек порта B предназначен только для чтения, в то время как регистр данных и регистр направления данных - для чтения/записи.

Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы порта B могут поглощать ток до 20 mA и непосредственно управлять светодиодными индикаторами. Если выводы PB0..PB7 используются как входы и замыкаются на землю, если включены внутренние подтягивающие резисторы, выводы являются источниками тока (Iil). Дополнительные функции выводов порта B приведены в таблице 8.

Таблица 2.13. Альтернативные функции выводов порта B
Вывод Альтернативная функция
PB0 AIN0 (Положительный вход аналогового компаратора)
PB1 AIN1 (Отрицательный вход аналогового компаратора)
PB3 OC1 (Выход совпадения таймера/счетчика1)
PB5 MOSI (Вход данных для загрузки памяти)
PB6 MISO (Выход данных для чтения памяти)
PB7 SCK (Вход тактовых импульсов последовательного обмена)

При использовании альтернативных функций выводов. регистры DDRB иPORTB должны быть установлены в соответствии с описанием альтернативных функций.

Регистр данных порта B – PORTB
Бит 7 6 5 4 3 2 1 0
$18($38) PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0
Чт./зап R/W R/W R/W R/W R/W R/W R/W R/W
Нач.знач. 0 0 0 0 0 0 0 0
Регистр направления данных порта B – DDRB
Бит 7 6 5 4 3 2 1 0
$32($52) DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0
Чт./зап R/W R/W R/W R/W R/W R/W R/W R/W
Нач.знач. 0 0 0 0 0 0 0 0
Выводы порта B – PINB
Бит 7 6 5 4 3 2 1 0
$16 ($36) PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0
Чт./зап R/W R/W R/W R/W R/W R/W R/W R/W
Нач.знач. Hi-Z Hi-Z Hi-Z Hi-Z Hi-Z Hi-Z Hi-Z Hi-Z

PINB не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта B. При чтении PORTB, читаются данные из регистра-защелки, при чтении PINB читаются логические значения присутствующие на выводах порта.

Порт B, как порт ввода/вывода общего назначения

Все 8 бит порта B при использовании для ввода/вывода одинаковы. Бит DDBn регистра DDRB выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен(0) - вывод сконфигурирован как вход. Если PORTBn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTBn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.

Таблица 2.14. Влияние DDBn на выводы порта B
DDBn PORTBn Вх/Вых Подт. резист Комментарий
0 0 Вход Нет Третье состояние (Hi-Z)
0 1 Вход Да Вход PBn источник тока [i], если извне соединен с землей
1 0 Выход Нет Выход установлен в 0
1 1 Выход Нет Выход установлен в 1

n = 7,6...0 - номер вывода

Альтернативные функции PORT B

Порт D

Для порта D зарезервированы 3 ячейки памяти - регистр PORTD $12 ($32), регистр направления данных - DDRD $11 ($31) и выводы порта D - PIND $10 ($30). Регистры данных и направления данных могут читаться/записываться, ячейка PIND - только для чтения.

Порт D - 7-разрядный двунаправленный порт с встроенными подтягивающими регистрами. Выходные буферы порта могут поглощать ток до 20 mA. Если выводы используются как входы и на них подан низкий уровень, они являются источниками тока [i], если подключены подтягивающие резисторы. Некоторые из выводов порта имеют альтернативные функции, как показано в таблице 18.

Если выводы порта используются для обслуживания альтернативных функций, они должны быть сконфигурированы на ввод/вывод в соответствии с описанием функции.

Таблица 2.15. Альтернативные функции порта D
Вывод порта Альтернативная функция
PD0 RXD (вход данных UART)
PD1 TXD (выход данных UART)
PD2 INT0 (вход внешнего прерывания 0)
PD3 INT1 (вход внешнего прерывания 1)
PD4 T0 (внешний вход таймера счетчика 0)
PD5 T1 (внешний вход таймера счетчика 1)
PD6 ICP (вход захвата таймера счетчика 1)
Регистр данных порта D – PORTD
Бит 7 6 5 4 3 2 1 0
$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
Бит 7 6 5 4 3 2 1 0
$11 ($31) - DDD6 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
Бит 7 6 5 4 3 2 1 0
$10 ($30) PIND7 PIND6 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

PIND не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта D. При чтении PORTD, читаются данные из регистра-защелки, при чтении PIND читаются логические значения присутствующие на выводах порта.

Порт D, как порт ввода/вывода общего назначения

Бит DDDn регистра DDRD выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTDn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Дляотключения резистора, PORTDn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.

Таблица 2.16. Влияние DDBn на выводы порта B
DDDn PORTDn Вх/Вых Подт.резист Комментарий
0 0 Вход Нет Третье состояние (Hi-Z)
0 1 Вход Да Вход PDn источник тока [i], если извне соединен с землей
1 0 Выход Нет Выход установлен в 0
1 1 Выход Нет Выход установлен в 1

n = 7,6...0 - номер вывода

Альтернативные функции порта D

Hosted by uCoz