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

17. Однокристальные микроконтроллеры семейства mcs-51: порты ввода/вывода, таймеры/счетчики, последовательный порт, система прерываний. Назначение, основные особенности.

Порты P0, P1, P2, P3 являются двунаправленными параллельными портами ввода/вывода и предназначены для обеспечения обмена информацией МК с внешними устройствами, образуя 32 линии ввода/вывода. Линии портов могут также выполнять ряд дополнительных (альтернативных) функций.

Через порт P0 (в мультиплексном режиме) выводится младший байт адреса, а также выдается и принимается в МК байт данных при работе с внешней памятью программ и данных.

Через порт P2 выводится старший байт адреса при работе с внешней памятью программ и данных.

Каждая линия порта P3 имеет индивидуальную альтернативную функцию:

P3.0 – вход приемника последовательного порта RxD;

P3.1 – выход передатчика последовательного порта TxD;

P3.2 – вход запроса внешнего прерывания INT0;

P3.3 – вход запроса внешнего прерывания INT1;

P3.4 – вход счетчика внешних событий T0;

P3.5 – вход счетчика внешних событий T1;

P3.6 – строб записи во внешнюю память данных ;

P3.7 – строб чтения из внешней памяти данных .

При использовании по своему основному назначению каждая линия любого порта может быть задействована для ввода или вывода информации независимо от направления передачи других линий этого же порта. Каждый порт отображается в карте памяти МК регистром специальных функций с тем же именем: P0, P1, P2, P3. Следует отметить, что обращаться к регистрам данных портов P0-P3 следует с использованием только прямой адресации. Косвенная адресация для портов невозможна. Все регистры портов допускают прямую побитовую адресацию. Отдельные линии портов могут быть установлены и сброшены командами операций с битами.

Примеры команд работы с портами:

MOV A,P1 ; Считать состояние линий порта P1 и переслать данные в аккумулятор

MOV P2,#55H ; Вывести в порт P2 код 55H

ORL P3,#0FH ; Вывести на линии 0-3 порта P3 «единицы»

Порты ввода/вывода МК 8051 не имеют специальных регистров направления передачи данных. Для перевода линии порта в режим ввода следует записать в ее триггер-защелку «1». Примеры команд настройки портов на ввод:

MOV P0,#0FFH ; Настроить все линии порта P0 на ввод

SETB P1.0 ; Настроить 0-ю линию порта P1 на ввод

ORL P2,#00001111B ; Настроить линии разрядов 0-3 порта P2 на ввод

Микроконтроллер 8051 имеет два 16-разрядных таймера/счетчика, которые именуют Т/С0 и Т/С1. Каждый из них может работать как в режиме таймера, так и в режиме счетчика внешних событий (см. п.10). При работе в режиме таймера на вход двоичного счетчика поступает импульсная последовательность с частотой fСЧ = fCLK/12, т.е. его содержимое инкрементируется в каждом машинном цикле. При работе в качестве счетчика на вход двоичного счетчика поступают импульсы со входов T0/P3.5 для Т/С0 и T1/P3.6 для Т/С1. Содержимое Т/С инкрементируется под воздействием перехода из «1» в «0» внешнего входного сигнала. Так как на распознавание перехода требуется два машинных цикла, то максимальная частота внешней последовательности импульсов равна fCLK/24 при длительности единичного значения импульса не менее одного машинного цикла. На значение минимальной частоты ограничений нет.

16-разрядные двоичные счетчики Т/С0 и Т/С1 состоят из двух пар 8-разрядных регистров, соответственно TH0, TL0 и TH1, TL1. Причем регистры TH0, TH1 – старшие, а регистры TL0, TL1 - младшие. Каждый из них является регистром специальных функций и имеет свой адрес в памяти.

Каждый таймер/счетчик может работать в одном из четырех режимов, обозначаемых цифрами 0, 1, 2 и 3. Для управления режимами работы T/C и для организации взаимодействия таймеров с системой прерывания используются два регистра специальных функций TMOD – регистр режима и TCON – регистр управления.

Последовательный порт ввода/вывода обеспечивает синхронный или асинхронный режимы передачи данных и служит для взаимодействия МК с различными внешними устройствами по последовательному интерфейсу. Последовательный порт МК 8051 представляет собой модуль UART (или по-другому, УАПП – универсальный асинхронный приемо-передатчик).

Два регистра специальных функций используются для работы с последовательным портом МК 8051: SCON – регистр управления портом; SBUF – регистр данных порта.

Последовательный порт использует два вывода порта P3, которые выполняют альтернативную функцию: вывод P3.0 является входом последовательных данных RxD (входом приемника), вывод P3.1 – выходом последовательных данных TxD (выходом передатчика).

Порт может работать в четырех режимах, выбор которых осуществляется через регистр SCON.

Режим 0. Это синхронный режим работы последовательного порта, в котором он выполняет функции 8-разрядного сдвигового регистра. В этом режиме информация и передается и принимается через вход приемника RxD. Принимаются или передаются 8 бит данных. Через выход передатчика TxD выдаются импульсы синхронизации, которые сопровождают каждый принимаемый или передаваемый бит.

Режим 1. Это асинхронный режим работы порта, в котором передаются через TxD или принимаются из RxD 10 бит информации: старт-бит, 8 бит данных и стоп-бит. Скорость приемо-передачи в этом режиме – величина переменная и задается таймером Т/С1.

Режим 2. Это также асинхронный режим работы порта, в котором через TxD передаются или из RxD принимаются 11 бит информации: старт-бит, 8 бит данных, программируемый 9-й бит (D8) и стоп-бит.

Режим 3. Совпадает с режимом 2 во всех деталях, за исключением частоты приемо-передачи, которая задается таймером Т/С1.

Механизм прерываний в микроконтроллерах семейства MCS-51 позволяет автоматически реагировать на внешние и на внутренние события (переполнение таймеров/счетчиков, завершение последовательного обмена). Упрощенная схема прерываний показана на рис. 17.1.

Рис. 17.1. Структура системы прерываний МК 8051

Каждое из внешних прерываний и может быть вызвано либо низким уровнем (логический 0) или переходом из «1» в «0» сигналов на выводах микроконтроллера P3.2, P3.3, что определяется состоянием битов IT0 и IT1 в регистре TCON. При поступлении запросов внешнего прерывания , устанавливаются флаги IE0, IE1 в регистре TCON, которые инициируют вызов соответствующей подпрограммы обслуживания прерывания. Сброс этих флагов выполняется аппаратно (автоматически внутренними средствами МК) только в том случае, если прерывание было вызвано переходом из «1» в «0» сигнала на входах , . Если же прерывание было вызвано низким уровнем (логическим 0) входного сигнала, то сброс флагов IE0, IE1 выполняет соответствующая подпрограмма обслуживания прерывания путем воздействия на источник прерывания с целью снятия им запроса.

Прерывания от таймеров/счетчиков T/C0 и T/C1 вызываются установкой флагов TF0 и TF1 регистра TCON, которые устанавливаются при переполнении соответствующих регистров таймеров/счетчиков. Сброс флагов TF0 и TF1 производится аппаратурой микроконтроллера, т.е. автоматически, при переходе к подпрограмме обслуживания прерывания.

Прерывание от последовательного порта вызывается установкой флага прерывания приемника RI или флага прерывания передатчика TI в регистре SCON. В отличие от всех остальных флагов, RI и TI сбрасываются только программным путем обычно в пределах подпрограммы обработки прерывания, где определяется, какому из флагов RI или TI соответствует прерывание.

Каждый из перечисленных источников прерываний может быть индивидуально разрешен или запрещен установкой или сбросом соответствующего бита в регистре разрешения прерываний IE. Регистр IE содержит также бит EA, сброс которого в 0 запрещает сразу все прерывания. Необходимым условием прерывания является его разрешение в регистре IE.

Структура приоритетов прерываний является двухступенчатой. Каждому источнику прерывания может быть индивидуально присвоен один из двух уровней приоритета высокий или низкий. Выполняется это установкой (высокий уровень приоритета) или сбросом (низкий уровень приоритета) соответствующего бита в регистре приоритетов прерываний IP.

Флаги прерываний опрашиваются в каждом машинном цикле. Анализ флагов выполняется в течение следующего машинного цикла. И только после выполнения последнего цикла текущей команды производится аппаратный вызов соответствующей подпрограммы обслуживания, эквивалентной команде LCALL.

Аппаратно-реализуемая команда LCALL загружает содержимое счетчика команд PC в стек (это будет адрес возврата), после чего записывает в PC адрес соответствующей подпрограммы обработки прерывания

Источник прерывания

Адрес подпрограммы (вектор прерывания)

IE0

0003H

TF0

000BH

IE1

0013H

TF1

001BH

RI или TI

0023H

Подпрограмма обслуживания прерывания продолжается до выполнения команды возврата из прерывания RETI. Команда RETI восстанавливает состояние логики прерывания и загружает в счетчик команд PC из вершины стека сохраненный адрес возврата в основную программу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]