Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к первой контрольной точке.docx
Скачиваний:
0
Добавлен:
12.02.2026
Размер:
2.47 Mб
Скачать

10) Регистры ввода-вывода. Схема устройства вывода микроконтроллера, управляющие регистры, режимы работы.

Все регистры ввода/вывода (РВВ) условно можно разделить на два типа:

  • служебные регистры микроконтроллера,

  • регистры, относящиеся к конкретным периферийным устройствам.

Все регистры ввода/вывода занимают свое адресное пространство в памяти данных (SRAM) – от 32 до 95 (или в шестнадцатиричном счислении от $20 до $5F) и идут сразу за регистрами общего назначения, в так называемом адресном пространстве ввода/вывода. Каждый регистр восьмиразрядный и занимает память в один байт.

К примеру, для управления портом ввода-вывода имеется три РВВ – один служит для задания направления работы порта (на вывод или ввод информации), второй для подключения и отключения подтягивающего регистра, а третий для выдачи на порт логического нуля или единицы (в случае, если порт работает на выход). И так каждое устройство.

Схема порта ввода-вывода.

На входе стоит небольшая защита из диодов, которая призвана защитить вход микроконтроллера от превышения напряжения питания. Если напряжение на входе будет выше напряжения питания, то верхний диод откроется, и это напряжение уйдёт на шину питания, где с ним будет бороться источник питания и его фильтры. Если на вход попадет отрицательное напряжение (ниже уровня земли), то оно будет нейтрализовано через нижний диод и уйдет на землю. Управляющая логика, определяющая конфигурацию порта (направление передачи данных) при этом изображена в виде простейших переключателей.

Основные управляющие регистры порта ввода-вывода:

  • Регистр DDRx (Data Direction Register) - порт направления данных, определяет будет порт работать на вход данных или на выход. (1 - выход, 0 - вход)

  • Регистр PORTx - определяет текущее значение порта, если он работает на выход, то есть подаётся на выход напряжение (1) или нет (0).

  • Регистр PUEx (pull-up enabled) - определяет включена ли подтяжка через резистор на порте (на рисунке был ключ к1)(1 - включен, 0 - выключен).

  • Регистр PINx - чисто входной, позволяет считывать напряжение на входе (в нём лежит 1, если есть напряжение и 0, если нет)

Режимы работы (простите за мыло):

DDRxn

PORTxn

PUExn

Ввод/Вывод

Pull-up

Комментарий

0

0

0

Вход

нет

Вывод находится в третьем состоянии (Hi-Z)

0

0

1

Вход

есть

Если вывод на земле, Pxn станет источником тока

1

0

0

Выход

нет

На выходе – низкий уровень (логический 0)

1

1

0

Выход

нет

На выходе – высокий уровень (логическая 1)

ОГОВОРКА: для включения подтяжки, в теории, можно использовать комбинацию DDRxn = 0, PORTxn = 1, у него так в методе показано (табличка ниже), но более правильно будет сделать, как у меня.

DDRxn

PORTxn

Ввод/Вывод

Pull-up

Комментарий

0

0

Вход

нет

Вывод находится в третьем состоянии (Hi-Z)

0

1

Вход

есть

Если вывод на земле, Pxn станет источником тока

1

0

Выход

нет

На выходе – низкий уровень (логический 0)

1

1

Выход

нет

На выходе – высокий уровень (логическая 1)