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

 
 
 
«Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.»
Brian W. Kernighan.
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы программирования 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