fl
"РЛ" - НАЧИНАЮ Щ ИМ
і
Продолжение. Начало в №1-8/2007
Глава 18. И спол ьзование тайм еров
для ф орм ирования врем енны х интервалов
После освоения просто огромного теоретического мате-
риала пришла пора практически закрепить полученные зна-
ния. В этой главе я постараюсь рассказать об использова-
нии таймеров в практических целях.
Прежде всего, рассмотрим самую подходящую задачу для
таймера ©: счет времени.
Как и в любых электронных часах, мы будем считать по-
деленные на определенный коэффициент периоды частоты
кварцевого генератора, чтобы сформировать нужные нам
интервалы времени (секунды, минуты и т.д.). Так как тайме-
ры микроконтроллера считают машинные циклы, то и наш
делитель будет равен 12 - это понятно. Теперь определим,
через какое максимальное время счета системных циклов
может переполниться таймер. В режиме 1 таймер считает от
0 до
ОРРРРЬ,
а затем переполняется, т.е. период перепол-
нений составит 65535 системных циклов или (при кварце
12 МГц) 65,535 миллисекунд, что, во-первых, достаточно
мало, а во-вторых, является неудобной величиной для даль-
нейшего получения привычных интервалов времени в секун-
ды и их десятичные доли. Было бы здорово, если бы мы мог-
ли заставить переполняться таймер хотя бы каждые 50 мил-
лисекунд. И мы это можем! Ведь через 65535 микросекунд
Роман А браш
г. Новочеркасск
E-mail: arv@radioliga.com
таймер переполнится только в том случае, если будет счи-
тать с нулевого значения, а если мы занесем перед началом
счета в его счетчик какое-то значение, то переполнение на-
ступит раньше. По переполнению возникнет прерывание, в
обработчике которого мы снова должны занести это значе-
ние в счетчик, чтобы следующее прерывание снова наступи-
ло через нужный нам интервал времени - вот и все.
Итак, давайте рассчитаем, какое же начальное значение
надо занести в счетчик таймера, чтобы он переполнился ров-
но через 50000 микросекунд - это просто: 65535 - 50000 =
15535, в шестнадцатеричном виде 3CAFh. Именно зто зна-
чение и надо заносить в качестве начального в счетчик тай-
мера, чтобы он переполнился ровно через 50000 микросе-
кунд, т.е. через 0,05 сек. Реагировать на эти отмеренные ин-
тервалы мы можем разными способами: либо в основной
программе анализировать флагТРх (если прерывания от со-
ответствующего таймера запрещены), либо непосредствен-
но в обработчике прерываний (если они разрешены). Выбор
следует делать исходя из конкретных условий, однако я со-
ветую стараться так построить свою программу, чтобы обра-
ботка критически важных интервалов времени велась в об-
работчиках прерываний, а не критически важных (т.е. таких,
к точности которых не предъявляется особых требований) -
в основной программе.
Давайте попробуем проанализировать следующую про-
грамму (введите ее вручную в MCStudio).
Const
equ
15535
/
InitTH equ
high(Const)
;
InitTL equ
low(Const)
t
cseg
org
0
jmp
st.
;
org
OOOBh
f
TimerO
jmp
timerO
/
st:
mov
TMOD, #1
setb
EA
;
setb
ЕТ0
;
setb
TF0
;
setb
tro
;
jmp
$
t
; обработчик прерывания
timerO:
mov
ТН0, #InitTH
t
mov
TL0, #InitTL
t
reti
t
end
начальное значение счетчика
начальное значение ТН0
начальное значение ТЬО
переход на начало программы
вектор обработчика прерывания
переход на обработчик
режим работы Т1шег0 задаем = 1
разрешаем все прерывания вообще
разрешаем прерывания от Т±тег0 в частности
искусственно вызываем прерывание первый раз
запускаем ТллпегО
ничего не делаем больше, зацикливаемся
заносим начальное значение ТН0
заносим начальное значение ТЬО
обработчик завершен
Проанализируем ее работу, используя возможности
МСБЩбю. Установим курсор на первую команду обработ-
чика прерываний от таймера и нажмем Б5. Вы увидите,
что строка выделилась красным цветом - это символизи-
рует точку останова программы, т.е. при симуляции работы
микроконтроллера МСБШбю остановит выполнение програм-
мы, как только окажется на заданной строке. Поставив точ-
ку останова запустим нашу программу: нажимаем Б9. От-
кроем окно тайминга и включим счетчик, чтобы измерять ин-
тервалы времени. Теперь нажмем Б9 еще раз - программа
42
ПО
/О п7
предыдущая страница 42 Радиолюбитель 2007-09 читать онлайн следующая страница 44 Радиолюбитель 2007-09 читать онлайн Домой Выключить/включить текст