Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория микропроцессорных систем АТ_Методическое...docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
3.72 Mб
Скачать

Описание вариантов конфигурации таймеров-счетчиков

Фактически работа определяется конфигурацией счётных регистров. Управление запуском и остановкой таймеров осуществляется соответственно логике восприятия значений разрядов TRx, GATE и сигнала INTx. (см. рис.14.3) и является одинаковым для всех типов конфигурации. Для всех режимов одинаковым является также выбор источника импульсов, которые подсчитываются, через установление значения разрядов С/Т (регистр TMOD). При переполнении счетных регистров (переход из состояния "1...1" к состоянию "0...0") устанавливается соответствующий флаг прерывания (TF0 или TF1), что является сигналом для процессора МК51 о завершении очередного цикла подсчета. После выдачи сигнала прерывания таймер продолжает подсчет импульсов в соответствии с установленным режимом. Действия, которые должны выполняться при переполнении таймера, зависят от задачи и определяются программистом.

Конфигурация 0 (M1=0, М0=0) - регистр THх работает как восьмиразрядний Т/С, на вход которого подключен пятиразрядний счетчик-делитель с коэффициентом 32, реализованный на TLх. Схема таймера-счетчика в режиме 0 показана на рис.14.4-а (рис. 26-а в комплекте). Таймерный регистр имеет длину 13 бит (TLx=5, THx=8).

Конфигурация 1 (M1=0, M0=1) - Т/С реализован на основе 16-разрядного таймерного регистра TLx:THx. По сути, работа такая же, как и в конфигурации 0, но делитель на TLx имеет разрядность 8 и коэффициент 256. Максимальное число импульсов, которое может быть подсчитано в этом режиме, - 65536, измеренный интервал времени до 65 мс с точностью 1 мкс.

Конфигурация 2 (M1=1, M0=0) - TLx является восьмиразрядним счетным регистром. Переполнение регистра TLx вызовет генерацию флага прерывания TFx и автоматическую загрузку в TLx стартового числа, которое предварительно может быть записано в регистр Тнх. Схема таймера для конфигурации 2 показана на рис.14.4-б (рис. 26-б в комплекте). Таймер-счетчик в конфигурации 2 имеет смысл использовать для реализации повторяющихся интервалов времени одинаковой продолжительности. Одним из стандартных применений Т/С1 в этой конфигурации является задание скорости передачи информации через последовательный порт. При этом сигнал переполнения TF1 является стробом передачи очередного бита (рис.13.1).

Конфигурация 3 (M1=1, M0=1) - Т/С1 не работает и сохраняет свое содержимое неизменным. Схема Т/С0 в конфигурации 3 показана на рис.14.5 (рис. 27 в комплекте). Регистры TL0 и ТН0 функционируют как два независимых восьмиразрядных таймера. Управление работой TL0 осуществляется битами С/Т, GATE и TR0 таймера 0, а также сигналом INT0. При переполнении таймера TL0 формируется флаг переполнения TF0. Таймер ТН0 может работать только как счетчик МЦ с запуском от TR1 и формированием флага TF1. Если Т/С0 используется в конфигурации 3, то Т/С1 может применяться по назначению, которое не требует явной обработки прерываний, например, для синхронизации последовательного порта.

Рис. 14.4

 

Рис. 14.5

Особенности реализации временных интервалов

Реализация временных интервалов (задание и измерение) имеет некоторые особенности, вызванные тем, что содержимое таймерных регистров нельзя контролировать в процессе подсчета импульсов без резкого снижения эффективности процессора (то есть дополнительной загрузки процессора программной проверкой содержимого таймерных регистров). В нормальном режиме параллельной работы процессора и таймера последний информирует процессор лишь о моментах переполнения путем формирования сигнала прерывания.

Исходя из этого, для реализации интервала времени заданной продолжительности T, сек, необходимо выполнить такие действия:

1.     Проверить возможность реализации заданного интервала. Должно выполняться условие

[ T / Ti ] < Nmax,

где Ti - период следования подсчитываемых импульсов, (импульсы ГТИ МК51);

Nmax - максимальное число, которое может быть записано в таймерный регистр в конкретной конфигурации; [ ] - операция взятия целой части.

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

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

Ns = Nmax - [ T / Ti ].

После этого таймер может быть включен (например, командой SETB TRx), и через T секунд (с точностью Ti) при переполнении будет сформированный сигнал прерывания TFx, то есть процессор получит информацию о завершении заданного интервала. Процесс реализации интервала иллюстрируется схемой (рис. 14.6):

Рис. 14.6. Диаграмма реализации интервала времени на таймере