Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по МК-МИА-16.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
7.24 Mб
Скачать

Описание регистров портов ввода-вывода.

Регистр данных порта – PORTх (где x-A, B, C, D, E, F)

PORTx7

PORTx6

PORTx5

PORTx4

PORTx3

PORTx2

PORTx1

PORTx0

W/R

W/R

W/R

W/R

W/R

W/R

W/R

W/R

W/R

Исходное

значение

0

0

0

0

0

0

0

0

Регистр направления данных порта x–DDRx

DDx7

DDx6

DDx5

DDx4

DDx3

DDx2

DDx1

DDx0

W/R

W/R

W/R

W/R

W/R

W/R

W/R

W/R

W/R

Исходное

значение

0

0

0

0

0

0

0

0

Регистр выводов входа порта x – PINx

Разряд

7

6

5

4

3

2

1

0

PINx7

PINx6

PINx5

PINx4

PINx3

PINx2

PINx1

PINx0

W/R

R

R

R

R

R

R

R

R

Исх. значение

-

-

-

-

-

-

-

-

PINx - адрес выводов входа порта x не является регистром в полном смысле этого слова, и эти адреса обеспечивают считывание физического состояния каждого вывода порта. При считывании PORTx считывается состояние фиксаторов данных порта x, а при считывании PINx считываются непосредственно логические состояния выводов.

Регистр данных порта G – PORTG

-

-

-

PORTG4

PORTG3

PORTG2

PORTG1

PORTG0

W/R

W/R

W/R

W/R

W/R

W/R

W/R

W/R

W/R

Исходное

значение

0

0

0

0

0

0

0

0

Регистр направления данных порта G – DDRG

-

-

DDG4

DDG3

DDG2

DDG1

DDG0

W/R

W/R

W/R

W/R

W/R

W/R

W/R

W/R

W/R

Исходное

значение

0

0

0

0

0

0

0

0

Регистр выводов входа порта G – PING

-

-

-

PING4

PING3

PING2

PING1

PING0

W/R

R

R

R

R

R

R

R

R

Исходное значение

-

-

-

-

-

-

-

-

В следующих примерах показано как установить на линиях РВ0 и РВ1 уровень логической 1, а на линиях РВ2 и РВ3 – логического 0, а также как настроить линии РВ4…РВ7 на ввод с подключением подтягивающих резисторов на линиях 6 и 7. Результирующее состояние линий считываются обратно, но, с учетом сказанного выше, включена инструкция nop для обеспечения возможности обратного считывания только что назначенного состояния некоторых выводов.

Пример кода на Ассемблере.

;Разрешаем подтягивание и устанавливаем высокие выходные ;уровни

;Определяем направления данных линий портов

ldi r16,(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0)

ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)

out DDRB,r17

out PORTB,r16

; Вставляем инструкцию nop для синхронизации

nop

; Опрос состояния выводов порта B

in r16,PINB