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

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



На правах рекламы:



Rambler's Top100 Рейтинг@Mail.ru
Микропроцессоры и микроконтроллеры :: Структура и программирование однокристальных микроконтроллеров :: 5.2 Структура и использование таймеров в составе МК MCS-51

5.2 Структура и использование таймеров в составе МК MCS-51

В составе базовой модели микроконтроллера MCS-51 реализованы два таймера с условными именами T0 и Т1. Задачи, решаемые с помощью таймеров:

·  измерение интервалов времени между событиями;

·  реализация интервалов времени;

·  подсчет внешних импульсов (внешних событий).

Логическая модель таймеров может быть представлена в виде:

Основной элемент каждого таймера – счетные регистры TH1, TL1, TH0, TL0. Символы “H” и “L” означают старший и младший регистры соответственно.

В процессе работы таймер подсчитывает импульсы. Различают два базовых режима работы таймеров:

·  таймирование – подсчет импульсов с постоянным периодом от ГТИ МК;

·  счет – подсчет асинхронных импульсов с внешнего входа Т0 или Т1.

Иногда таймеры называют таймерами-счетчиками.

Частота подсчитываемых импульсов в режиме таймирования соответствует периоду машинных циклов: , где FQ – частота кварцевого резонатора.

Максимальная частота внешних импульсов для режима счета: .

При поступлении каждого импульса состояние таймера изменяется: N = N + 1.
В принципе таймер считает от некоторого стартового числа NST до NMAX. Фактическая величина NMAX зависит от выбранной разрядности n счетного регистра:

При переходе из состояния NMAX в 0 таймер формирует специальный бит-признак:

TF0 – флаг переполнения таймера Т0

TF1 – флаг переполнения таймера Т1.

Для выбора режимов работы таймеров и управления ими в микроконтроллере имеются два специальных регистра:

·  регистр TMOD – выбор режимов работы и конфигурирование таймеров;

·  регистр TCON – запуск/останов таймеров и фиксация флагов TF0, TF1.

Структура регистра выбора режимов TMOD следующая:

Бит

Назначение бита

Gate

Выбор способа запуска/останова таймера.

При Gate = 0 – программный запуск/останов с помощью бита TR0 или TR1.

При Gate = 1 – программно-аппаратный запуск/останов. Для запуска таймера нужно установить TR0 = 1 или TR1 = 1, но таймер начнет работать, только когда на внешнем входе INT0 или INT1 присутствует сигнал “1” (соответственно для таймеров Т0 и Т1). Остановить таймер можно как битом TR0 или TR1, так и внешним сигналом INT0 или INT1 соответственно

C/T

Выбор режима работы

При C/T = 0 – режим таймирования (подсчет импульсов от ГТИ МК).

При C/T = 1 – режим счета импульсов по внешним входам Т0 или Т1

M1, M0

Выбор конфигурации таймера

Зависит от совместных значений битов М1 и М0 для каждого из таймеров индивидуально (символ “x” означает 0 или 1, т.е. для таймера Т0 или Т1)

М1

M0

Описание конфигурации

0

0

ТНх – восьмиразрядный таймер или счетчик,

TLx – предварительный делитель частоты импульсов на 32

0

1

Полный 16-разрядный таймер или счетчик

1

0

TLx – восьмиразрядный таймер или счетчик с автоматической перезагрузкой стартового числа.

Стартовое число счета Nst задается и хранится в ТНх.

1

1

TL0 и TH0 – восьмиразрядные таймеры, которые управляются битами TR0 и TR1 соответственно. Таймер T1 – отключается.

Регистр TMOD не имеет битовой адресации, поэтому байт для настройки таймеров нужно записывать в регистр целиком.

Например, нужно выполнить такую настройку:

·  таймер Т1 – программный запуск, режим таймирования, конфигурация с автоперезагрузкой стартового числа;

·  таймер Т0 – программно-аппаратный запуск, режим счета внешних импульсов, полная 16-битовая конфигурация.

Двоичный код для настройки таймеров формируем в виде:

init_timers equ 00101101b

Настройка таймеров на нужный режим осуществляем командой

MOV TMOD, #init_timers

Важно: при переполнении счетного регистра устанавливается флаг переполнения TF0 или TF1; это происходит независимо от режима и конфигурации таймеров; таймер продолжает счет с “0”, или с NST для конфигурации с автоперезагрузкой.

Регистр TCON служит для управления запуском таймеров и контроля переполнения, а также для контроля внешних сигналов прерываний. Здесь мы рассмотрим только старшую часть этого регистра:

Регистр TCON имеет битовую адресацию, поэтому можно индивидуально работать с каждым битом, используя указанные имена.













При использовании любых материалов с сайта обратная ссылка на сайт Микропроцессоры и микроконтроллеры обязательна.