Читайте также:
|
|
3. 1 Параллельные порты ввода/вывода
Порты ввода/вывода представляют собой регистры для хранения вводимых в микроконтроллер и выводимых из микроконтроллера данных. Порты ввода и вывода являются двунаправленными, т.е. функции ввода и вывода объединены. Микроконтроллер ATмega16 имеет четыре восьми раз - рядных порта ввода/вывода: A,B,C и D. Большинство выводов портов являются альтернативными, т.е. могут используются не только как выводы данных, а как входы или выходы сигналов, встроенных в микроконтроллер периферийных устройств. Эти сигналы не сохраняются в регистрах портов.
Каждый порт имеет в своем составе три расположенных в пространстве ввода/вывода (памяти данных) регистра: регистр хранения выводимых данных PORT, регистр направления данных DDR (ввод или вывод) и регистр входных данных PIN. Регистр входных данных PIN обеспечивает только возможность чтения,он фактически представляет собой выводы (“ножки”) МК. Регистры данных PORT и направления данных DDR обеспечивают возможность и чтения и записи.
Регистр данных порта – PORT
PORT7 | PORT6 | PORT5 | PORT4 | PORT3 | PORT2 | PORT1 | PORT0 | ||
Регистр направления передачи данных порта - DDR
DDR7 | DDR6 | DDR5 | DDR4 | DDR3 | DDR2 | DDR1 | DDR0 | ||
Регистр выводов входа порта – PIN
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 | Нагрузочный резистор | Описание вывода |
Ввод | Резистор не подключен | Третье состояние | ||
Ввод | Подключен | При входном низком уровне обеспечивается вытекающий ток | ||
Вывод | Не подключен | Низкий уровень, двухтактный выход | ||
Вывод | Не подключен | Высокий уровень, двухтактный выход |
При выводе данных, порт должен быть предварительно настроен не вывод установкой разрядов регистра 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 Альтернативные функции выводов порта С
Дата добавления: 2015-07-20; просмотров: 249 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Команды сдвигов и операций с битами | | | Подсистема прерываний микроконтроллера |