Перейти к содержанию

Порты ввода-вывода ATmega32A: регистры и биты

Каждым портом управляют три регистра: DDRx задаёт направление вывода (1 — выход), PORTx — уровень на выходе, а у входа включает подтяжку к питанию, PINx читает уровни на выводах.

Данные: описание ATmega32A из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита DS40002072A.

Регистры блока

РегистрАдресНазначениеПосле сброса
PIND0x30 (I/O 0x10)Входы порта D—
DDRD0x31 (I/O 0x11)Направление выводов порта D0x00
PORTD0x32 (I/O 0x12)Выходы и подтяжки порта D0x00
PINC0x33 (I/O 0x13)Входы порта C—
DDRC0x34 (I/O 0x14)Направление выводов порта C0x00
PORTC0x35 (I/O 0x15)Выходы и подтяжки порта C0x00
PINB0x36 (I/O 0x16)Входы порта B—
DDRB0x37 (I/O 0x17)Направление выводов порта B0x00
PORTB0x38 (I/O 0x18)Выходы и подтяжки порта B0x00
PINA0x39 (I/O 0x19)Входы порта A—
DDRA0x3A (I/O 0x1A)Направление выводов порта A0x00
PORTA0x3B (I/O 0x1B)Выходы и подтяжки порта A0x00

Состояния вывода

Что делает вывод Pxn при разных битах DDxn и PORTxn и общем бите PUD в MCUCR (PUD = 1 выключает подтяжки всех портов). Таблица 13-1 даташита DS40002072A.

DDxnPORTxnPUDВыводПодтяжкаСостояние
00Xвходнетвысокий импеданс (Hi-Z)
010входдавывод отдаёт ток, если снаружи его тянут к земле
011входнетвысокий импеданс (Hi-Z)
10Xвыходнетнизкий уровень (вывод принимает ток)
11Xвыходнетвысокий уровень (вывод отдаёт ток)

PIND — входы порта D

Адрес 0x30 (I/O 0x10), 8 бит.

Бит76543210
ИмяPIND7PIND6PIND5PIND4PIND3PIND2PIND1PIND0
ДоступRRRRRRRR
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.

DDRD — направление выводов порта D

Адрес 0x31 (I/O 0x11), 8 бит, после сброса 0x00.

Бит76543210
ИмяDDD7DDD6DDD5DDD4DDD3DDD2DDD1DDD0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.

PORTD — выходы и подтяжки порта D

Адрес 0x32 (I/O 0x12), 8 бит, после сброса 0x00.

Бит76543210
ИмяPORTD7PORTD6PORTD5PORTD4PORTD3PORTD2PORTD1PORTD0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PDn: PD7, PD6, PD5, PD4, PD3, PD2, PD1, PD0.

PINC — входы порта C

Адрес 0x33 (I/O 0x13), 8 бит.

Бит76543210
ИмяPINC7PINC6PINC5PINC4PINC3PINC2PINC1PINC0
ДоступRRRRRRRR
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PCn: PC7, PC6, PC5, PC4, PC3, PC2, PC1, PC0.

DDRC — направление выводов порта C

Адрес 0x34 (I/O 0x14), 8 бит, после сброса 0x00.

Бит76543210
ИмяDDC7DDC6DDC5DDC4DDC3DDC2DDC1DDC0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PCn: PC7, PC6, PC5, PC4, PC3, PC2, PC1, PC0.

PORTC — выходы и подтяжки порта C

Адрес 0x35 (I/O 0x15), 8 бит, после сброса 0x00.

Бит76543210
ИмяPORTC7PORTC6PORTC5PORTC4PORTC3PORTC2PORTC1PORTC0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PCn: PC7, PC6, PC5, PC4, PC3, PC2, PC1, PC0.

PINB — входы порта B

Адрес 0x36 (I/O 0x16), 8 бит.

Бит76543210
ИмяPINB7PINB6PINB5PINB4PINB3PINB2PINB1PINB0
ДоступRRRRRRRR
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.

DDRB — направление выводов порта B

Адрес 0x37 (I/O 0x17), 8 бит, после сброса 0x00.

Бит76543210
ИмяDDB7DDB6DDB5DDB4DDB3DDB2DDB1DDB0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.

PORTB — выходы и подтяжки порта B

Адрес 0x38 (I/O 0x18), 8 бит, после сброса 0x00.

Бит76543210
ИмяPORTB7PORTB6PORTB5PORTB4PORTB3PORTB2PORTB1PORTB0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PBn: PB7, PB6, PB5, PB4, PB3, PB2, PB1, PB0.

PINA — входы порта A

Адрес 0x39 (I/O 0x19), 8 бит.

Бит76543210
ИмяPINA7PINA6PINA5PINA4PINA3PINA2PINA1PINA0
ДоступRRRRRRRR
После сбросаN/AN/AN/AN/AN/AN/AN/AN/A

Бит n отвечает за вывод PAn: PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.

DDRA — направление выводов порта A

Адрес 0x3A (I/O 0x1A), 8 бит, после сброса 0x00.

Бит76543210
ИмяDDA7DDA6DDA5DDA4DDA3DDA2DDA1DDA0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PAn: PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.

PORTA — выходы и подтяжки порта A

Адрес 0x3B (I/O 0x1B), 8 бит, после сброса 0x00.

Бит76543210
ИмяPORTA7PORTA6PORTA5PORTA4PORTA3PORTA2PORTA1PORTA0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000

Бит n отвечает за вывод PAn: PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.

Частые вопросы

Какими командами ассемблера обращаться к регистрам порты ATmega32A?

Командами IN и OUT доступны PIND (0x10), DDRD (0x11), PORTD (0x12), PINC (0x13), DDRC (0x14), PORTC (0x15), PINB (0x16), DDRB (0x17), PORTB (0x18), PINA (0x19), DDRA (0x1A) и PORTA (0x1B); из них PIND, DDRD, PORTD, PINC, DDRC, PORTC, PINB, DDRB, PORTB, PINA, DDRA и PORTA — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

Какие значения у регистров порты после сброса?

Все регистры блока, для которых даташит DS40002072A приводит значение после сброса (DDRD, PORTD, DDRC, PORTC, DDRB, PORTB, DDRA и PORTA), после сброса равны нулю.

Источники

  1. Microchip. ATmega32A Data Sheet (DS40002072A) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega32A (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

Нашли ошибку в регистрах?

Другие регистры ATmega32A

Калькуляторы и статьи