Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Таблица частот DTMF: в таблице содержится число тактов MCLK на полупериод. Значения скорректированы для действующей частоты MCLK в процессе ассемблирования и округлены с минимально возможной ошибкой частоты
FDTMFLO | .word |
.word | |
.word | |
.word | |
FDTMFHI | .word |
.word | |
.word | |
.word |
((TCLK/697)+l)/2
((TCLK/770)+l)/2 ((TCLK/852)+l)/2 ((TCLK/941)+l)/2 ((TCLK/1209)+l)/2
((TCLK/1336)+1)/2 ((TCLK/1477)+1)/2 ((TCLK/1633)+1)/2
Нижняя частота DTMF 697Hz 770Hz 852Hz 941Hz
Верхняя частота DTMF1209Hz 1336Hz 1477Hz 1633Hz
; Таблица содержит число полупериодов для длительности
сигнала DL (мс).
; Для подсчёта используется нижняя частота DTMF
Число полупериодов для DL в мс |
DTMFL.byte 2*697*DL/100C
.byte 2*770*DL/100C
.byte 2*852*DL/1000;
.byte 2*941*DL/1000;
.sect «TIMVEC»,OFFFOh
.word TIM_HND
.word TIMMODC
.sect «INITVEC»,OFFFEh
.word INIT
Вектора прерываний таймера Timer_A
Вектор модулей 1..4 таймера Вектор модуля О таймера Вектор сброса Reset
Ниже приведено несколько более быстрое решение. Однако, при этом оно требует большего объёма ОЗУ т.к. данные, получаемые из таблиц не пересчитываются каждый раз, а хранятся в двух словах в ОЗУ DTMFLO и DTMFHI. Чтение производится из подпрограмм обработки прерываний таймера Timer_A. Используемые таблицы идентичны приведенным в предыдущем примере.
Дата публикования: 2014-11-18; Прочитано: 338 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!