Бит DDBn регистра DDRB выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTBn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTBn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.
АЛЬТЕРНАТИВНЫЕ ФУНКЦИИ ПОРТА B
SCK - бит 7 порта B - тактовые импульсы для записи/чтения памяти
MISO - бит 6 порта B - выход данных для чтения памяти
MOSI - бит 5 порта B - вход данных для записи памяти
OC1 - PORTB, Bit 3 - Выход совпадения. Этот вывод может быть сконфигурирован для вывода внешнего события - совпадения таймера 1. Для этого бит DDB3 должен быть установлен в 1 (вывод сконфигурирован как выход).
AIN1 - бит 1 порта B - Отрицательный вход аналогового компаратора. Если вывод сконфигурирован как вход (DDB1 сброшен) и отключен внутренний подтягивающий резистор (PB0 сброшен), то этот вывод работает как отрицательный вход встроенного аналогового компаратора.
AIN0 - бит 0 порта B - Положительный вход аналогового компаратора. Если вывод сконфигурирован как вход (DDB0 сброшен) и отключен внутренний подтягивающий резистор (PB1 сброшен), то этот вывод работает как положительный вход встроенного аналогового компаратора.
Таблица 2. Влияние DDBn на выводы порта B
DDBn | PORTBn | Вх/Вых | Подт.резист | Комментарий |
0 | 0 | Вход | 7Нет | Третье состояние (Hi-Z) |
0 | 1 | Вход | Да | PBn источник тока IIL, если извне соединен с землей |
1 | 0 | Выход | Нет | Выход установлен в 0 |
1 | 1 | Выход | Нет | Выход установлен в 1 |
n = 7,6...0 - номер вывода
Для порта D зарезервированы 3 ячейки памяти - регистр PORTD ($12, $32), регистр направления данных - DDRD ($11, $31) и выводы порта D - PIND ($10, $30). Регистры данных и направления данных могут читаться/записываться, ячейка PIND - только для чтения.
Порт D - 7-разрядный двунаправленный порт со встроенными подтягивающими регистрами. Выходные буферы порта могут поглощать ток до 20 мА. Выводы используются, как входы и на них подан низкий уровень, они являются источниками тока IIL, если подключены подтягивающие резисторы. Некоторые из выводов порта имеют альтернативные функции, как показано в таблице 18.
Если выводы порта используются для обслуживания альтернативных функций, они должны быть сконфигурированы на ввод/вывод в соответствии с описанием функции.
Таблица 3. Альтернативные функции порта 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) Чт./зап. (R/W) Начальн.знач. | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
- | PORTD6 | PORTD5 | PORTD4 | PORTD3 | PORTD2 | PORTD1 | PORTD0 | PORTD | |
R | R/W | R/W | R/W | R/W | R/W | R/W | R/W | ||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА D - DDRD
Бит $11($31) Чт./зап. (R/W) Начальн.знач. | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
- | DDD6 | DDD5 | DDD4 | DDD3 | DDD2 | DDD1 | DDD0 | DDRD | |
R | R/W | R/W | R/W | R/W | R/W | R/W | R/W | ||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ВЫВОДЫ ПОРТА D - PIND
Бит $10 ($30) Чт./зап. (R/W) Начальн.знач. | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
- | PIND6 | PIND5 | PIND4 | PIND3 | PIND2 | PIND1 | PIND0 | PIND | |
R | R | R | R | R | R | R | R | ||
0 | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z | Hi-Z |
PIND не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта D. При чтении PORTD, читаются данные из регистра-защелки, при чтении PIND читаются логические значения, присутствующие на выводах порта.
Порт D, как порт ввода/вывода общего назначения
Все 7 бит порта D при использовании для ввода/вывода одинаковы.
Бит DDDn регистра DDRD выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTDn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTDn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.
Таблица 4. Влияние DDDn на выводы порта D
DDDn | PORTDn | Вх/Вых | Подт.резист | Комментарий |
0 | 0 | Вход | Нет | Третье состояние (Hi-Z) |
0 | 1 | Вход | Да | PDn источник тока IIL, если извне соединен с землей |
1 | 0 | Выход | Нет | Выход установлен в 0 |
1 | 1 | Выход | Нет | Выход установлен в 1 |
n = 6...0 - номер вывода
Альтернативные функции порта D
ICP - Порт D, бит 6 - вход захвата таймера/счетчика 1. Подробнее см. описание таймера.
T1 - Порт D, бит 5 - тактовый вход таймера/счетчика 1. Подробнее см. описание таймера.
T0 - Порт D, бит 4 - тактовый вход таймера/счетчика 0. Подробнее см. описание таймера.
INT1 - Порт D, бит 3 - вход внешних прерываний 1. Подробнее см. описание прерываний.
INT0 - Порт D, бит 2 - вход внешних прерываний 0. Подробнее см. описание прерываний.
TXD - Порт D, бит 1 - выход передатчика UART. Если разрешена работа передатчика UART, то независимо от состояния DDRD1 этот вывод сконфигурирован как выход.
RXD - Порт D, бит 0 - выход приемника UART. Если разрешена работа приемника UART, то независимо от состояния DDRD0 этот вывод сконфигурирован как выход. Когда UART использует вывод для приема данных, единица в PORTD0 подключает встроенный подтягивающий резистор.
Пример выполнения лабораторной работы №1
В регистр r16 записывается число, например, 256 (11111111), при нажатии на клавишу SW0, расположенную на стенде, происходит уменьшение числа, записанного в r16, на 1. Вывод значения из регистра r16 отображается на панели светодиодов. Панель кнопок подключена к Gорту D, панель светодиодов к Порту B.
;***** Демонстрация использования светодиодов и кнопок в стенде STK500