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

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

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

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

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

РегистрАдресНазначениеПосле сброса
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

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

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

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
Имя—PINC6PINC5PINC4PINC3PINC2PINC1PINC0
ДоступRRRRRRRR
После сброса0N/AN/AN/AN/AN/AN/AN/A

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

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

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

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

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

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

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

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

Бит n отвечает за вывод PCn: 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.

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

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

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

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

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

Источники

  1. Microchip. Atmel. ATmega8(L) datasheet (2486AA) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega8 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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