Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное_пособие.doc
Скачиваний:
70
Добавлен:
10.11.2019
Размер:
8.13 Mб
Скачать

3 Встроенные устройства

3. 1 Параллельные порты ввода/вывода

Порты ввода/вывода представляют собой регистры для хранения вводимых в микроконтроллер и выводимых из микроконтроллера данных. Порты ввода и вывода являются двунаправленными, т.е. функции ввода и вывода объединены. Микроконтроллер ATмega16 имеет четыре восьми раз - рядных порта ввода/вывода: A,B,C и D. Большинство выводов портов являются альтернативными, т.е. могут используются не только как выводы данных, а как входы или выходы сигналов, встроенных в микроконтроллер периферийных устройств. Эти сигналы не сохраняются в регистрах портов.

Каждый порт имеет в своем составе три расположен­ных в пространстве ввода/вывода (памяти данных) регистра: регистр хранения выводимых данных PORT, регистр направления данных DDR (ввод или вывод) и регистр входных данных PIN. Регистр входных данных PIN обеспечивает только возможность чтения,он фактически представляет собой выводы (“ножки”) МК. Регистры данных PORT и направления данных DDR обес­печивают возможность и чтения и записи.

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

7

6

5

4

3

2

1

0

PORT7

PORT6

PORT5

PORT4

PORT3

PORT2

PORT1

PORT0

Регистр направления передачи данных порта - DDR

7

6

5

4

3

2

1

0

DDR7

DDR6

DDR5

DDR4

DDR3

DDR2

DDR1

DDR0

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

7

6

5

4

3

2

1

0

PIN7

PIN6

PIN5

PIN4

PIN3

PIN2

PIN1

PIN0

Рисунок 14

Упрощенная схема одного разряда любого порта х представлена на рисунке 15.

Резистор R называется нагрузочным или подтягивающим. Если DDRx=0 и PORTx=1, то на выходе элемента И-НЕ уровень логической единицы и резистор подключен к контакту PIN. Для всех остальных комбинаций входных уровней на выходе элемента И уровень логического нуля и резистор будет отключен. Если DDRx=0 и PORTx=0, то выход триггера хранения выходного бита PORTx отключен от PIN. Для этой

Рисунок 15

комбинаций вывод порта PINx находится в отключенном состоянии (все три ключа разомкнуты). Если разряд DDRx установлен, то ключ S2 замкнут. В этом случае выход триггера хранения выходного бита подключен к PINх, то состояние PORTх передается на контакты PINх, т.е разряд х порта настроен на вывод. Для настройки разряда порта на ввод, должен быть сброшен разряд триггера DDRx (выход PORTх отключен от PINх). Для считывания входных данных используется команда IN Rd,PIN, при выполнении которой формируется импульс Чтения Pin. Этим импульсом замыкается ключ S1, и состояние PIN считывается в регистр РОН. Таким образом, вводимые данные не сохраняются, а считываются непосредственно с контактов.

Настройки разряда порта микроконтроллера приведены в табл.8.

Таблица 8

DDRх

PORTх

I/O

Нагрузочный резистор

Описание вывода

0

0

Ввод

Резистор не подключен

Третье состояние

0

1

Ввод

Подключен

При входном низком уровне обеспечивается вытекающий ток

1

0

Вывод

Не подключен

Низкий уровень, двухтактный выход

1

1

Вывод

Не подключен

Высокий уровень, двухтактный выход

При выводе данных, порт должен быть предварительно настроен не вывод установкой разрядов регистра DDRx, а затем данные должны быть помещены в регистр PORTx по команде OUT PORTx,Rr. Данные на PIN будут переданы в следующем цикле.

Работа с портами ввода/вывода осуществляется командами IN Rd,IO; OUT IO,Rr; CBI IO,b; SBI IO,b. Кроме того, при работе с портами могут использоваться команды условных переходов SBIC IO,b и SBIS IO,b. В этих командах указывается адрес регистра порта ВВ или имя регистра и адрес (номер) или имя разряда, например, CBI PORTD,5 – сбросить пятый разряд порта D.

Пример 1: вывести в порт B содержимое регистра R23.

LDI R16,$ff ; управляющий байт $ff=11111111 для настройки

; всех разрядов порта на вывод

OUT DDRB,R16 ; настроить порт В на вывод

OUT PORTB,R23 ; вывод в PORTB из регистра R23.

Пример 2: вывести в разряды 6 и 3 порта D соответственно единицу и ноль.

SBI DDRD,6 ; настройка разряда 6 на вывод

SBI DDRD,3 ; настройка разряда 3 на вывод

SBI PORTD,6 ; установить разряд 6 порта D в 1

CBI PORTD,3 ; сбросить разряд 3 порта D в 0.

Пример 3: входные данные порта А поместить в R21.

LDI R16,0 ; управляющий байт 00000000 для настройки

; всего порта на ввод

OUT DDRA,R16 ; настроить порт A на ввод

IN R21,PINA ; ввод из порта в регистр R23.

Для некоторых блоков микроконтроллера требуются входные сигналы от внешних устройств встроенной системы, и некоторые блоки микроконтроллера формируют сигналы для внешних устройств. Эти сигналы принимаются и передаются через разряды портов ввода/вывода, а точнее через PINы портов. В этом заключается понятие функциональной альтернативности портов, т.е. разряд порта может использоваться как по прямому назначению (для хранения вводимых и выводимых данных), так и для ввода и вывода других сигналов. В идентификации разрядов портов в условном графическом обозначении микроконтроллера через знак “/” указывают имя альтернативного сигнала, например: PD2/T0 – второй разряд порта D, используется также как вход внешнего сигнала для встроенного счетчика-таймера Т0.

Альтернатив­ные функции выводов портов В,D и C приведены в таблицах 9 - 11.

Порт А микроконтроллера имеет альтернативные функции входов аналоговых сигналов для аналого-цифрового преобразователя.

При использовании выводов для выполнения альтернативных функций регистры DDRB и PORTB должны быть установлены соответствую­щим образом. Однако некоторые периферийные устройства при их активизации самостоятельно переопределяют конфигурацию (направление) используемых выводов.

Выходные буферы порта В обеспечивают ток до 20 мА, что достаточно для прямого управления све­тодиодными индикаторами. Если выводы порта используются в ка­честве входов и внешним сигналом удерживаются на низком уровне, то вытекающий ток обеспечивается подключением внутренних нагрузочных резисторов.

Таблица 9 Альтернативные функции выводов порта В

Вывод порта

Альтернативная функция

PB0

Т0 - вход внешнего сигнала для счетчика/таймера Т0

PB1

Т1 - вход внешнего сигнала для счетчика/таймера Т1

РВ2

AIN0/INT2 –положительный вход аналогового компаратора/вход сигнала внешнего прерывания INT2

РВ3

AIN1/OC0 –отрицательный вход аналогового компаратора/выход совпадения таймера Т0

РВ4

SS – выбор Slave устройства в канале SPI

РВ5

MOSI – вход данных канала SPI

РВ6

MISO – выход данных канала SPI

РВ7

SCK – вход тактовых импульсов модуля SPI

Таблица 10 Альтернативные функции выводов порта D

Вывод порта

Дополнительная функция

PD0

RXD – вход данных UART

PD1

TXD – выход данных UART

PD2

INTO - Вход внешнего прерывания 0

PD3

INT1 - Вход внешнего прерывания 1

PD4

OC1B – выход сравнения Т1

PD5

OC1А – выход сравнения Т1

PD6

ICP – вход захвата таймера/счетчика 1

PD7

OC2 – выход сравнения Т2

Таблица 11 Альтернативные функции выводов порта С

Вывод порта

Дополнительная функция

PС0

SCL – тактовый сигнал модуля TWI

PС1

SCA – данные модуля TWI

PС2

TCK – тактовый сигнал JTAG

PС3

TMS – выбор режима JTAG

PС4

TDO – выход данных JTAG

PС5

TDI – вход данных JTAG

PС6

TOSC1 – подключение кварца Т2

PС7

TOSC2 – подключение кварца Т2