Порты ввода - вывода
Система ввода-вывода (ВВ) микроконтроллеров MCS - 51 состоит из четырех двунаправленных 8-разрядных портов P0-P3. Каждый из портов содержит регистр - защелку, имеющий байтовую и битовую адресацию для установки (сброса) разрядов с помощью программного обеспечения. Все порты ВВ отображены в пространстве внутренней памяти DSEG по адресам 80H, 90H, 0A0h, 0B0H и ничем не отличаются от обычных ячеек памяти. Таким образом, любая команда с операндом из внутренней памяти может быть применена к содержимому портов P0-P3. Порты P0-P3 совмещены с битовым пространством BSEG, что обеспечивает доступ к отдельным его разрядам независимо от других. Порты P0-P3 занимают в битовом пространстве BSEG адреса 80H-87H, 90H-97H, 0A0H-0A7H и 0B0H-0B7H соответственно.
Помимо работы в качестве обычных портов ввода/вывода линии портов P0-P3 могут выполнять ряд дополнительных функций, описанных ниже.
При обращении к внешней памяти программ или данных порты P0 и P2 выполняют функции системной шины - совмещенной шины адрес/данные и адресной шины соответственно. Младший байт адреса и данные передаются через порт P0 в мультиплексном режиме: сначала выводится адрес, а затем выдается или принимается в МК байт данных. Старший байт адреса выдается через порт P2.
Через порт P1 задается младший байт адреса при программировании внутреннего ППЗУ и при чтении внутренней памяти программ.
Линии порта P3 реализуют управление циклами обмена и другие специальные функции аппаратного уровня, описываемые в таблице 12.3.
Таблица 12.3
Функции линий порта Р3
Бит | Мнемоника | Назначение |
P3.0 | RxD | Вход приемника последовательного канала |
P3.1 | TxD | Выход передатчика последовательного канала |
P3.2 | Вход запроса на прерывание 0 | |
P3.3 | Вход запроса на прерывание 1 | |
P3.4 | T0 | Внешний вход таймера/счетчика 0 |
P3.5 | T1 | Внешний вход таймера/счетчика 1 |
P3.6 | Строб записи в XSEG | |
P3.7 | Строб чтения из XSEG |
Последнее используется при обращении к внешней памяти. Во время обращения к внешней памяти содержимое разрядов регистра-защелки порта P2 не изменяется, а во все разряды регистра - защелки порта P0 всегда автоматически записываются «1».
Каждая линия портов может быть использована независимо для ввода или вывода информации. Для перевода какой-либо линии порта в режим ввода информации в соответствующий разряд регистра-защелки должна быть записана логическая 1. При сбросе состояние всех портов устанавливается равным 0FFH.
Любую линию ввода-вывода порта можно проверить с помощью команд условного перехода.
Порты P1-P3 имеют встроенную нагрузку, тогда как для порта P0, выполненного по схеме с открытым стоком, требуется внешняя нагрузка (за исключением случая, когда шина порта P0 используется в качестве шины «адрес/данные» внешней памяти).
Команды чтения портов МК делятся на две категории: команды, считывающие информацию непосредственно с внешних выводов порта, и команды, считывающие информацию с выходов регистров-защелок.
К командам чтения первой категории относятся, например, команды:
MOV A,<port>; MOV Rn,<port>; MOV @Ri,<port>; MOV C,<port.bit>.
Команды чтения второй категории реализуют режим «чтение-модификация-запись», при котором производится считывание состояния регистров-защелок порта, далее при необходимости модифицируют полученное значение и записывают результат обратно в порт. В таких командах операндом и регистром назначения результата является порт или бит порта.
Примеры подобных команд:
ANL <port>,<source>; ORL <port>,<source>; XRL <port>,<source>;
JBC <port.bit>,<addr>; CPL <port.bit>; INC <port>; DEC <port>;
DJNZ <port>,<addr>; CLR <port.bit>; SETB <port.bit>;
MOV <port.bit>,<source>;
где <source> - операнд-источник - аккумулятор, регистр, косвенно-адресуемая ячейка памяти.
Причиной, по которой команды «чтение-модификация-запись» обеспечивают раздельный доступ к регистру-защелке порта и к внешним выводам порта, является необходимость исключить возможность неправильного прочтения уровней сигналов на внешних выводах.
Дата добавления: 2021-12-14; просмотров: 301;