Порт ввода-вывода – логическое объединение сигнальных линий, через которое принимаются и передаются данные.
Каждая линия порта, как правило, обозначается как Pnx, где
- n – обозначение порта;
- x – номер бита (линии) в порте.
Каждый порт ввода-вывода обслуживают как минимум 3 служебных регистра:
- регистр, содержащий данные (уровни сигналов) на всех линиях порта и используется для записи сигналов в порт;
- регистр, содержащий состояния входов порта, доступен только для чтения, используется при чтении данных из порта;
- регистр направления линий порта: каждая линия порта может быть сконфигурирована как вход или как выход в зависимости от значения бита этого регистра.
Если какая-то линия порта ввода-вывода в схеме не используется, она должна быть определена как выход (соответствующий бит регистра направления должен соответствовать выходу), и ее выходное значение должно быть равно 0.
Большинство линий ввода-вывода могут быть сконфигурированы для выполнения альтернативных функций, обозначенных в назначении выводов микроконтроллера.
Для всех линий портов ввода-вывода, как правило, доступна программная конфигурация входных подтягивающих резисторов. Подтягивающие резисторы осуществляют доопределение потенциалов «брошенных» входов напряжением высокого (Pull-up) или низкого (Pull-down) уровня.
Для обращения к отдельным линиям порта используется маскирование битов.
Входные элементы управления
В качестве входных элементов управления могут использоваться
- другие элементы схемы;
- тумблеры;
- джамперы;
- множественные переключатели;
- кнопки.
Тумблеры предназначены для коммутации цепей управления. Обрабатываемый сигнал с тумблера – потенциальный.
Различают 1-позиционные и 2-позиционные тумблеры:
1-позиционные
2-позиционные
Джамперы, как правило, используются для переключения режима работы, и их состояние проверяется только в момент включения питания микроконтроллера. Установка джампера замыкает 2 вывода, между которыми он установлен.
Множественные переключатели представляют собой набор 1-позиционных тумблеров в миниатюрном формате.
Кнопки предназначены для коммутации цепей управления. Обрабатываемый сигнал с кнопки – импульсный и фиксирует момент нажатия кнопки и момент ее отжатия.
Выходные элементы управления
В качестве выходных элементов управления могут использоваться
- другие элементы схемы;
- элементы индикации (единичные светодиоды или светодиодные сборки, в частности, - 7-сегментные индикаторы).
Единичные светодиоды
Различают 7-сегментные индикаторы с общим анодом и с общим катодом.
При подаче логической единицы на соответствующий сегмент индикатора с общим катодом светодиод сегмента включается. При этом общий вывод сегментов (катод) должен быть соединен с логическим нулем.
При подаче логического нуля на соответствующий сегмент индикатора с общим анодом светодиод сегмента включается. При этом общий вывод (анод) должен быть соединен с логической единицей.
В таблице приведены коды для отображения цифр на 7-сегментном индикаторе
Цифра | G | F | E | D | C | B | A | Код |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0x3F | |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0x06 | |
1 | 0 | 1 | 1 | 0 | 1 | 1 | 0x5B | |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 0х4F | |
1 | 1 | 0 | 0 | 1 | 1 | 0 | 0x66 | |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 0x6D | |
1 | 1 | 1 | 1 | 1 | 0 | 1 | 0x7D | |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 0x07 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0x7F | |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 0x6F |
Уважаемая Елена не подскажите как написать в языке Си: если на три порта микрконтроллера при считывании датчиков будут нули то нужно четвертый порт перевести на выход if((PINA+PINB+PINC)==0){POTD=0xFF;} ,но компилятор ругается на такую запись в атмелстудио
Порт подразумевает, что датчик подключен ко всем 8 линиям? Он параллельным кодом выдает сигнал? Порт перевести на выход — имеется в виду линии сконфигурирован как выходы, значение не важно? Или вывести значение в порт? Тогда какое? Или все-таки задействуются отдельные линии порта?
В предложенной строке — как минимум, опечатка в POTD