ВУЗ:
Составители:
17
В приведённом примере таймер настроен на максимально возможный временной
интервал - 20 мс, счётчик импульсов реализован в регистре R1. Проверка истечения
заданного временного интервала осуществляется по флагу переполнения таймера (TF).
Прерывание должно быть замаскировано.
Поскольку аппаратурный таймер не может реализовать временные задержки
длительностью более 20 мс, “длинные” временные задержки должны реализовываться
программно
, например они могут “набираться” из интервалов в 20 мс с подсчётом числа
прерываний от таймера.
Четвёртый (полностью аппаратурный) способ подсчёта числа импульсов требует
использования двух аппаратурных счётчиков и поэтому возможен лишь для МК51. На Т/С1
можно выполнять подсчёт числа импульсов, а на Т/С0 - отсчёт заданного интервала. Датчик
импульсов должен
быть подключён к входу Т1:
; версия для МК51
time equ not(10000)+1 ; определение константы для
; отсчёта интервала 10 мс
mov tmod,#01010001b ; настройка т/с, 16 бит
; 1- счётчик
; 0 - таймер
clr a ; сброс аккумулятора
mov th1,a ; сброс т/с1
mov tl1,a
mov th0,#high(time) ; загрузка в т/с0
mov tl0,#low(time) ; константы time
orl tcon,#50h ; пуск т/с1 и т/с0
wait:jbc tcon.5,exit ; проверка переполнения т/с0
sjmp wait ; цикл, если tf=0
exit:mov b,th1 ; (b) (a)<--число импульсов
за 10 мс
mov a,tl1
... ; выход из процедуры
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »