Временная задержка подбирается экспериментальное (1–10 мс) в зависимости от типа датчика.
Пример 44. Формирование импульсных сигналов делается по принципу включен / выключен с необходимой временной задержкой:
PULLS:ON: ANL P1,#11110111B; выдача импульса в линию 3 порта 1
CALL DELAY ; временная задержка
OFF: ORL Р1,#00001000В; сброс
Пример 45. Считывание данных из таймера. Для устранения возможных сбоев при считывании сначала читается старший байт, потом – младший, после чего подтверждается, что старший байт за это время не изменился.
RDTIME: MOV A, TH0
MOV R0, TL0
CJNE A, TH0, RDTIME
MOV R1, А
RET
Пример 46. Подсчет числа импульсов, например, радиодеталей, которые движутся по конвейеру, зафиксированных фотоэлементом (рис. 9).
MOV TMOD,#01000000B; настройка счетчика 1
MOV TH1,#00H ; сброс счетчика
WAIT0: JB P3.4, WAIT0; ожидание включения транспортера
SETB TCON.6 ; запуск счетчика 1
WAITC: JNB P3.4, WAITC; ожидание отключения транспортера
CLR TCON.6 ; остановка счетчика 1
MOV A.TH1 ; A ¬ число деталей
EXIT: ; выход
Максимальное число радиодеталей – 255.
Пример 4 Реализация функций времени на основе таймеров.
В MCS-51 при частоте генератора тактовых импульсов 12 МГц таймер / счетчик изменяет свое значение с частотой 1 Мгц (в режиме таймера), или при поступлении сигнала от внешнего источника через счетный вход T0, T1 (в режиме счетчика).
Если использовать таймер / счетчик в режиме 1 полного формата (16 бит), то получим задержки в границах (1 – 65536 мкс).
Программа задержки на 50 мс в MCS-51, прерывание разрешено. Организация перехода к метке NEXT при переполнении Т/С0:
ORG 0ВН ; адреса вектора прерываний от Т/С0
CLR TCON.4 ; остановка Т/С0
RETI ; выход из подпрограммы обработки прерываний
ORG 100H ; начальный адрес программы
MOV TMOD, #01Н; настройка Т/С0
MOV TL0, #LOW (NOT(50000) – 1); загрузка таймера
MOV TH0, #HIGH (NOT(50000) – 1)
SETB TCON.4 ; старт Т/С0
SETB IE.1 ; разрешение прерываний от Т/С0
SETB PCON.0 ; перевод в режим холостого хода
NEXT: ; продолжение программы.
Пример 48. Организация задержки программным путем:
DELAY: MOV R2, Х ; (R2)¬(Х)
COUNT: DJNZ R2, COUNT; декремент R2 и цикл, если не нуль
RET ; возвращение из подпрограммы
Пример 49. Подпрограмма задержки на 50 мс, используя Т/С0, погрешность не превышает 2 мкс.
DELAY: MOV TMOD,#00000001B; настройка Т/С0
MOV TH0,#HIGH (NOT(50000–16))
MOV TL0,#LOW (NOT(50000–16))
SETB TCON.4 ; запуск Т/С0
JNB TCON.5,$ ; ожидание
ANL TCON,#NOT(30H); остановка Т/С0, сброс TF0
RET ; возвращение из подпрограммы
Пример 50. Подпрограмма задержки на 1 секунду. Погрешность не больше, чем 123 мкс.
OS: MOV R3,#20D ; счетчик циклов
S1: ACALL DELAY ; задержка на 50 мс
DJNZ R3, S1 ; организация цикла
RET ; возвращение из подпрограммы
Пример 51. Измерение временных интервалов. При применении таймера используется вход разрешения счетчика (). Тогда измеренный сигнал подается на вход , а измерение продолжительности выполняется в Т/С0.
«Положительный» импульс:
MOV TMOD,#00001001В; настраивание Т/С0 Перейти на страницу: 1 2 3 4
Другое по теме:
Исследование работы технологии IP-телефонии при передаче голоса и видеоизображения Цель работы -реализация сценария IP-телефонии " компьютер-компьютер "; -получение навыков при исследовании работы технологии IP-телефонии при передаче голоса; -получение навыков исследования работы технологии I ...