Библиотека Компэла


Глава 12.


Генерация и распознование DTMF-сигналов


bis.b #008h,&IEl

предварительной загрузки

; подготовка таймера-порта для rla г15

Разрешить прерывания от 8-битного таймера частоты DTMF-Hi

mov DTMF HI(RTEMP)

* 2 для 16-битной таблицы ,&DTMF TL

mov #003, RTEMP bis.b #008h,IE2

сохранить слово для верхней частоты счётчик для 8-битно­го таймера Разрешить прерывания от таймера-порта

mov.b &DTMF_TH,&TPCNT2 ; Загрузка старшего

байта в ТС2

mov.b &DTMF_TL,&TPCNT1 ; Загрузка младшего

байта в ТС1

Разрешить 16-битный таймер ,&ТРЕ ; Разрешить выходы DTMF-Hi/Lo Разрешить таймер

bis.b #080h,&TPD

bis.b #HI_OUT+LO_OUT

mov.b #090h,&TPCTL
ret


.^■к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к-к г

; Прерывание таймера-порта


ТР INT


xor.b #HI_OUT,&TPD ; Инверсия выхода

; DTMF-Hi mov.b &DTMF_TH,&TPCNT2 ; Загрузка старшего

; байта в ТС2 mov.b &DTMF_TL,&TPCNT1 ; Загрузка младшего

; байта в ТС1

bic.b #007h,&TPCTL ; Очистка флагов reti


eint Библиотека Компэла -

; Прерывание Р0.1/8-битный таймер TIM

; Разрешить прерывания —Г~489


f& Texas iNSiraJMENTS     IV. Примеры конкретных применений
  dec RTEMP  
  jz TOGGLE ; переход по 3-му
      ; прерыванию
  reti    
TOGGLE      
  xor .b #LO OUT,&TPD   Инверсия выхода
        DTMF-Lo
  mov #003,RTEMP   счётчик для 8-битно-
        го таймера
  dec RCOUNT   декремент счётчика
        длительности
  jz DTMF END   переход, если дли-
        тельность закончилась
  reti    
DTMF END      
  bic.b #037h,&TPCTL   Остановить счётчик
        таймера-порта
  bic.b #008h,TCCTL   Остановить счётчик
        8-битного таймера
  bic.b #008h,&IE2   Запретить прерывания
        8-бит. таймера
  bic.b #003h,&TPE   Запретить выходы
  reti    
; Адреса векторов прерываний  
  . sect «TP VECT», 0ffe8h
  .word TP INT ; Timer-Port
  . sect «TIM VECT», 0fff8h
  .word TIM 8B   8-битный таймес

; (Р0.0)