13.14. Описание регистров портов
13.14.1. DIR - регистр направления
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x00 |
|
DIR |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DIR[7:0]: направление линий в/в
С помощью данного регистра можно настроить направление каждой линии в/в порта. Если бит DIRn равен единице, то линия n работает как выход. Если же бит DIRn равен нулю, то линия n будет работать как вход.
13.14.2. DIRSET - регистр установки бит направления
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x01 |
|
DIRSET |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DIRSET[7:0]: установка бит направления
Данный регистр можно использовать, как альтернативу операции "чтение-модификация-запись", при выполнении настройки линий в/в для работы на вывод. Запись единицы в бит этого регистра приводит к установке соответствующего бита регистра DIR. При чтении регистра возвращается значение регистра DIR.
13.14.3. DIRCLR - регистр сброса бит направления
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x02 |
|
DIRCLR |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DIRCLR[7:0]: сброс бит направления
Данный регистр можно использовать, как альтернативу операции "чтение-модификация-запись", при выполнении настройки линий в/в для работы на ввод. Запись единицы в бит этого регистра приводит к сбросу соответствующего бита регистра DIR. При чтении регистра возвращается значение регистра DIR.
13.14.4. DIRTGL - регистр инвертирования бита направления
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x03 |
|
DIRTGL |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DIRTGL[7:0]: инвертирование бит направления
Данный регистр можно использовать, как альтернативу операции "чтение-модификация-запись" для изменения направления линий в/в на противоположное. Запись единицы в бит этого регистра приводит к инвертированию (изменение состояния на противоположное) соответствующего бита регистра DIR. При чтении регистра возвращается значение регистра DIR.
13.14.5. OUT - регистр вывода данных
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x04 |
|
OUT |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - OUT[7:0]: значение для вывода в порт
Записываемое в данный регистр значение выводится на линии порта. Если в бит OUTn записана единица, то линия n принимает высокий логический уровень, а если записывается ноль - то низкий уровень, однако так происходит только в том случае, если линия настроена на вывод.
13.14.6. OUTSET - регистр установки выходов порта
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x05 |
|
OUTSET |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - OUTSET[7:0]: установка выходов порта
Данный регистр можно использовать, как альтернативу операции "чтение-модификация-запись", для установки высокого уровня на отдельных линиях в/в. Запись единицы в бит этого регистра приводит к установке соответствующего бита регистра OUT. При чтении регистра возвращается значение регистра OUT.
13.14.7. OUTCLR - регистр сброса выходов порта
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x06 |
|
OUTCLR |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - OUTCLR[7:0]: сброс выходов порта
Данный регистр можно использовать, как альтернативу операции "чтение-модификация-запись", для установки низкого уровня на отдельных линиях в/в. Запись единицы в бит этого регистра приводит к сбросу соответствующего бита регистра OUT. При чтении регистра возвращается значение регистра OUT.
13.14.8. OUTTGL - регистр инвертирования выходов порта
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x07 |
|
OUTTGL |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Бит 7:0 - OUTTGL[7:0]: инвертирование выходов порта
Данный регистр можно использовать, как альтернативу операции "чтение-модификация-запись" для изменения состояния линий в/в на противоположное. Запись единицы в бит этого регистра приводит к инвертированию (изменение состояния на противоположное) соответствующего бита регистра OUT. При чтении регистра возвращается значение регистра OUT.
13.14.9. IN - регистр ввода данных
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x08 |
|
IN |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - IN[7:0]: значение, введенное из порта
В данном регистре отображается текущее состояние линий в/в при условии, что разрешена работа входного цифрового драйвера. Бит INn демонстрирует состояние линии n порта.
13.14.10. INTCTRL - регистр управления прерываниями
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x09 |
- |
- |
- |
- |
INT1LVL[1:0] |
INT0LVL[1:0] |
|
INTCTRL |
Чтение/запись |
Чт. |
Чт. |
Чт. |
Чт. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:4 - Res: резервные биты
Данные биты не используются и зарезервированы для использования в будущем. Для совместимости с более новыми МК, выполняя запись в этот регистр, всегда записывайте нули в резервные биты.
- Биты 3:2/1:0 - INTnLVL[1:0]: уровень прерывания n
С помощью данных бит можно выбрать уровень прерывания n порта ввода-вывода (более детально об уровнях прерываний см. в 12 "Прерывания и программируемый многоуровневый контроллер прерываний")
13.14.11. INT0MASK - регистр маски прерывания 0
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x0A |
|
INT0MASK |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - INT0MSK[7:0]: регистр маски прерывания 0
С помощью данных бит можно указать, какие линии порта используются в качестве прерывания 0 порта ввода-вывода. Если бит INT0MASKn сделать равным единице, то линия n будет использоваться, как источник прерывания 0. Условия генерации прерываний для каждой линии порта дополнительно задаются с помощью регистров PINnCTRL.
13.14.12. INT1MASK - регистр маски прерывания 1
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x0B |
|
INT1MASK |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - INT1MASK[7:0]: регистр маски прерывания 1
С помощью данных бит можно указать, какие линии порта используются в качестве прерывания 1 порта ввода-вывода. Если бит INT1MASKn сделать равным единице, то линия n будет использоваться, как источник прерывания 1. Условия генерации прерываний для каждой линии порта дополнительно задаются с помощью регистров PINnCTRL.
13.14.13. INTFLAGS - регистр флагов прерывания
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
+0x0C |
- |
- |
- |
- |
- |
- |
INT1IF |
INT0IF |
|
INTFLAGS |
Чтение/запись |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:2 - Res: резервные биты
Данные биты являются резервными и всегда считываются с нулевыми значениями. Для совместимости с будущими МК, выполняя запись в этот регистр, всегда записывайте нули в резервные биты.
- Биты 1:0 - INTnIF: флаг прерывания n
Флаг INTnIF устанавливается в том случае, если на любой из линий порта, которые выбраны в качестве источника прерывания n, выполняется настроенное условие генерации запроса на прерывание. Запись единицы в данный бит приводит к сбросу соответствующего флага прерывания. Разрешение и исполнение прерываний см. в описании уровней прерываний.
13.14.14. PINnCTRL - конфигурационный регистр линии n
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
SRLEN |
INVEN |
OPC[2:0] |
ISC[2:0] |
|
PINnCTRL |
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Бит 7 - SRLEN: разрешение ограничения скорости фронтов
Установка данного бита активизирует функцию ограничения скорости фронтов импульсов на линии в/в n.
- Бит 6 - INVEN: разрешение инвертированного ввода-вывода
Установка данного бита активизирует функцию инвертирования вводимых и выводимых данных на линии n.
- Биты 5:3 - OPC: настройка выходов и подтяжки
С помощью данных бит можно настроить выходы и подтяжку логических уровней (см. таблицу 13.4).
Таблица 13.4. Настройка выходов и подтяжки
OPC[2:0] |
Групповая конфигурация |
Описание |
Настройка выходов |
Настройка подтяжки |
000 |
TOTEM |
двухтактная линия |
(нет) |
001 |
BUSKEEPER |
двухтактная линия |
адаптивная |
010 |
PULLDOWN |
двухтактная линия |
к минусу питания |
011 |
PULLUP |
двухтактная линия |
к плюсу питания |
100 |
WIREDOR |
монтажное ИЛИ |
(нет) |
101 |
WIREDAND |
монтажное И |
(нет) |
110 |
WIREDORPULL |
монтажное ИЛИ |
к минусу питания |
111 |
WIREDANDPULL |
монтажное И |
к плюсу питания |
- Бит 2:0 - ISC[2:0]: настройка функции контроля входа
С помощью данных бит можно настроить функцию контроля входа n в соответствии с таблицей 13.5. От этих настроек зависит, в каком случае будут инициироваться прерывания и события. Опрос состояния линии порта через регистр IN возможен только при условии активности входного буфера.
Таблица 13.5. Настройка функции контроля входа
ISD[2:0] |
Групповая конфигурация |
Описание |
000 |
BOTHEDGES |
обнаружение обоих фронтов |
001 |
RISING |
обнаружение нарастающего фронта |
010 |
FALLING |
обнаружение падающего фронта |
011 |
LEVEL |
обнаружение низкого уровня(1) |
100 |
|
(резерв) |
101 |
|
(резерв) |
110 |
|
(резерв) |
111 |
INPUT_DISABLE |
отключение входного буфера(2) |
Прим.:
- Низкий уровень на линии в/в не генерирует события, зато высокий уровень - будет непрерывно генерировать события.
- Возможность отключения входного буфера предусмотрена только у портов A…F.
|