![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Порты ввода - вывода
Система ввода-вывода (ВВ) микроконтроллеров 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
Последнее используется при обращении к внешней памяти. Во время обращения к внешней памяти содержимое разрядов регистра-защелки порта 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> - операнд-источник - аккумулятор, регистр, косвенно-адресуемая ячейка памяти. Причиной, по которой команды «чтение-модификация-запись» обеспечивают раздельный доступ к регистру-защелке порта и к внешним выводам порта, является необходимость исключить возможность неправильного прочтения уровней сигналов на внешних выводах.
|