; Первая смена состоя-; ния через 0.71мс ; 1/(2x697) = 0.71мс |
MOV R5,&CCR1 MOV R5,&CCR2 ; Fetch the two cycle counts for the DTMF frequencies
MOV.B STDTMF+1,R5 |
Верхняя частота DTMF
MOV FDTMFHI(R5),DTMFHI ; Длительность
MOV.B STDTMF,R5 |
полупериода
Нижняя частота DTMF
MOV DTMFLO(R5),DTMFLO ; Длительность
полупериода
Счётчик длительности
RRA R5 ; Prepare byte index
MOV.B DTMFL(R5),LENGTH ; число смен состояния нижней частоты MOV #OMT+CCIE,&CCTL1 /Инверсия выхода,
прерывание разр.
MOV #OMT+CCIE,&CCTL2 /Инверсия выхода,
прерывание разр. Возврат в основной цикл
; Обработчик прерывания от CCR0 (здесь не используется)
TIMMOD0
RETI
; Обработчик прерываний от регистров захвата-сравнения
; 1..4
TIM HND ADD | &TAIV,PC |
RETI | |
JMP | HCCR1 |
JMP | HCCR2 |
JMP | HCCR3 |
Обработка запроса с наивысшим приоритетом
нет запроса прерывания: RETI
запрос от CCR1 (нижняя частота DTMF) запрос от CCR2 (верхняя частота DTMF) запрос от CCR3