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

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


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

Принципы реализации подсчета импульсов

На кристалле МК51 реализованы два 16-битовых таймера-счетчика событий, которые программно могут быть настроены на работу или в режиме таймера (реализация или измерение временных интервалов), или в режиме счетчика (подсчет количества внешних импульсов, которые поданы на вход Т0 или Т1). С точки зрения программиста, каждый таймер реализован как пара таймерных (счетных) регистров разрядностью 8 бит, на основе которых осуществляется подсчет. Таймерные регистры имеют символические имена: Таймер 0: ТН0, ТL0; Таймер 1: ТН1, ТL1.

При работе в режиме таймирования содержимое счетных регистров инкрементируется (увеличивается на единицу) один раз в каждом машинном цикле (при
= 12 Мгц - каждую микросекунду). Фактически в этом режиме реализуется подсчет импульсов от внутреннего генератора.

При работе в режиме счетчика содержимое таймерных регистров инкрементируется под влиянием перехода "1"-"0" внешнего сигнала, который подается на вход Т0 или Т1 МК51. Опрос уровня сигнала на входе Т0 или Т1 осуществляется в любом МЦ в фазе S5P2. Содержимое счетчика будет увеличено на единицу, если в минувшем цикле была считана "1", а в текущем цикле - "0". Значение счетчика при этом увеличится на единицу в фазе S3P1 следующего за выявлением перепада МЦ. Таким образом, на распознание перепада и инкремент счетчика нужно 2 МЦ. Поэтому максимальная частота подсчета входных импульсов равняется 1/24 частоты резонатора: . При = 12 Мгц счетчик МК51 способный подсчитывать внешние события, которые происходят с частотой от 0 Гц до 500 кГц.

Для гарантированного прочтения входной сигнал должен удерживать значение "1" как минимум 1 МЦ (т.е. в течение 1 мкс).

В обоих режимах таймер-счетчик, по сути, подсчитывает импульсы, но источник этих импульсов является различным. В режиме таймирования подсчитываются импульсы внутреннего генератора, таким образом осуществляется заполнение заданного временного интервала импульсами генератора МК51. В режиме счетчика подсчитывается количество внешних импульсов.