Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСы (МПС).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.53 Mб
Скачать

25. Система таймеров мк семейства мк-51. Режимы работы таймеров. Организация выдержки времени. Пример.

В архитектуру микроЭВМ МК51 включены два идентичных шестнадцатиразрядных таймера / счетчика Т/С0 и Т/С1, каждый из которых может быть использован либо в качестве таймера, либо в качестве счетчика внешних событий. При работе в качестве таймера содержимое Т/С инкрементируется в каждом машинном цикле, т.е. через каждые 12 периодов резонатора. При работе в качестве счетчика содержимое Т/С инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого на соответствующий (Т0, Т1) вывод МК51. Опрос значения внешнего входного сигнала выполняется в момент времени S5P2 каждого машинного цикла. Содержимое счетчика будет увеличено на 1 в том случае, если в предыдущем цикле был считан входной сигнал высокого уровня (1), а в следующем - сигнал низкого уровня (0). Новое (инкрементированное) значение счетчика будет сформировано в момент S3P1 в цикле, следующего за тем, в котором был обнаружен переход из 1 в 0. Так как на распознавание перехода требуется два машинных цикла, то максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. В состав каждого счетчика входят два восьмиразрядных РСФ: ТН (старший байт) и ТL (младший). Каждый счетчик может быть запрограммирован для работы в одном из четырех режимов. Для формирования режимов работы таймеров используется побитно недоступный регистр TMOD из РСФ, а для оперативного управления его работой - побитно адресуемый регистр TCON. Один из четырех режимов Т/С формируется двоичной комбинацией битов М1,М0: В режимах 0 и 1 таймеры / счетчики конфигурируются в соответствии с рис. 10.1 Работа таймеров / счетчиков в режимах 0 и 1 идентична за исключением того, что в режиме 0 TL0 (TL1) работает в режиме пятиразрядного счетчика (в целях совместимости с предшествующим поколением микропроцессоров семейства MCS 48), а в режиме 1 - восьмиразрядного.

Для использования таймеров / счетчиков в качестве счетчиков внешних событий бит С/Т0 (С/Т1) = TMOD.2 (TMOD.6) должен быть установлен в единицу, при этом вход счетчика TL0 (TL1) подключается к внешнему выводу микроЭВМ Т0 (Т1). Для использования в качестве таймеров этот бит должен быть сброшен в 0, при этом на вход TL0 (TL1) от задающего генератора подаются импульсы с периодом машинного цикла. Работа таймера / счетчика может быть в любой момент остановлена программно сбросом бита TR0 = TCON.4 (TR1 = TCON.6). Если бит TR0 (TR1) установлен в единицу, а бит GT0 = TMOD.3 ( GT1 = TMOD.7) сброшен в 0, то таймер / счетчик работает непрерывно. Если же биты TR0 (TR1) и GT0 (GT1) установлены в единичное значение, то работа таймера / счетчика останавливается при подаче потенциала логического нуля на вход INT0 (INT1); таким образом может быть либо реализовано внешнее управление таймером / счетчиком событий, либо обеспечено торможение работы таймера на время воздействия внешних прерываний. В режиме 2 таймеры / счетчики работают с автоперезагрузкой в соответствии с конфигурацией регистров TH и TL, показанной на рис. 10.2; конфигурация остальных цепей при этом идентична рис.10.1. В этом режиме для счета используется только один восьмиразрядный регистр - счетчик TL0 (TL1), который в момент перехода из состояния FFH в состояние 00H загружается содержимым регистра TH0 (TH1). Режим 2 используется, как правило, для организации циклических процессов с фиксированным значением времени цикла. Так, например, если запрограммировать Т/С0 как таймер в режиме 2, например, последовательностью команд: MOV TMOD, # 00000010В SETB TR0 ; занести в регистр ТН0 значение 131 MOV TH0, #131 MOV TL0, #131 и разрешить прерывания, SETB ET0 SETB EA то прерывающая подпрограмма, ассоциированная с прерыванием от таймера / счетчика Т/С0, при частоте задающего генератора 12 МГц будет выполнятся периодически с интервалом 125 микросекунд, т.к. период машинного цикла при fт = 12 МГц Тц = 12 / fт = 1 мкс; а период повторения Тповт = ( 256 - 131 ) * Тц = 125 мкс. В режиме 3 реально работает только таймер / счетчик Т/С0; установка режима 3 таймера / счетчика Т/С1 приводит к его останову с сохранением содержимого TH1 и TL1.

Рисунок 10.3

При установке в режим 3 таймера / счетчика Т/С0 цепи обоих устройств принимают конфигурацию в соответствии с рис. 10.3 Таймер / счетчик Т/С0 разделяется на два устройства, лишая таймер/ счетчик Т/С1 цепи управления по TR1 и возможности формировать запрос на прерывание. TH0 и TL0 функционируют в этом режиме как два независимых восьмибитных устройства, одно из которых (TH0) может использоваться только в качестве таймера, а другое (TL0) - и в качестве таймера и в качестве счетчика внешних событий с управлением, аналогичным режимам 0, 1 и 2. При установке Т/С0 в режим 3 таймер / счетчик Т/С1 может использоваться в любых приложениях, не требующих формирования запроса на прерывание. Одним из таких приложений является управление скоростью работы последовательного порта . Т/С1 при установке Т/С0 в режим 3 может быть включен в любой из режимов 0, 1 или 2, однако потеря цепи управления по биту TR1 при этом лишает Т/С1 возможности гарантированного останова по этой цепи. Между тем для гарантированного останова Т/С1 может быть установлен в режим 3. Поскольку регистр TMOD, определяющий режимы работы таймеров / счетчиков побитно недоступен, останов Т/С1 может быть осуществлен по команде ORL TMOD, #00110000B

Пример выдержки времени.

Потетрадное свечение диодов.(см.Вопрос №19)

Метка

Команды на языке ассемблера

Коментарий

ORG 1000H

EQU STOP,02F3H

MOV 089H,#02H

Инициальзация таймера 0

MOV 0A8H,#82H

MOV 8AH,#05H

MOV 8CH,#05H

MOV 90H,# FFH

FFH->P1

00001111->A

MOV A,#0FH

MOV R6,#40H

Запись в регистры числа определяющего ВРЕМЕННую выдержку.

MOV R7,#1FH

MOV 2EH,R6

MOV 2FH,R7

MOV 90H,#00H

Отключение питания индикаторов

SETB 08CH

Включение таймера

J00:

SJMP J00

Бесконечный цикл

J9:

DJNZ 2EH,J10

Выдержка времени

DJNZ 2FH,J10

RL A, RL A, RL A, RL A

Сдвиг влево содержимого аккумулятора

MOV 90H,A

Высвечивание содержимого аккумулятора

MOV 2EH,R6

Восстановление содержимого ячеек , для последующей выдержки времени

MOV 2FH,R7

J10:

RETI

Выход из подпрограммы прерывания

ORG 1753H

Вектор прерывания по таймеру 0

LJMP J9

Переход на подпрограмму прерывания