Микропроцессоры и микроконтроллеры

 
 
 
«Если вы считаете, что C++ труден, попытайтесь выучить английский.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы программирования MSC-51 :: Описание вариантов конфигурации таймеров-счетчиков

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

Фактически работа определяется конфигурацией счётных регистров. Управление запуском и остановкой таймеров осуществляется соответственно логике восприятия значений разрядов 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