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

mov #WDTPW+WDTCL,&WDTCTL остановить
      • сторожевой
      • таймер
; Инициализация MCLK    
mov.b #102-1,&SCFQCTL   •102*32.768 Гц =
      • 3,342 МГц
bis .b #008h,&SCFIC   • Макс. частота
      • 3 MHz
; Инициализация ЖКИ/очистка памяти ЖКИ
CLRSCR    
mov #11,r5  
clrl    
clr .b DISPL-1 (r5)  
dec r5  
jnz clrl  
mov.b #017h,&BTCTL   • Тактирование
      • ЖКИ
mov.b #0ffh,&LCDCTL   ; Генератор ЖКИ
; Инициализация АЦП    
mov #04912h,&ACTL   ; Инициализация
      ; АЦП, внутрен-
      ; ний ИОН
bis .b #004h,&IE2   ; разрешить пре-
      ; рывания от АЦП
; Инициализация 8-битного таймера  
mov.b #100h-9,&TCPLD ; счёт до 9
      ; тактов
      ; ACLK=274 мкс
mov.b #000h,&TCDAT   ; загрузка
      ; счётчика
mov.b #068h,&TCCTL   ; Инициализация
      ; 8-битного тай-
      ; мера
mov.b #008h,&IEl ; разрешить прерывания
  ; от таймера
eint    
bis .b #LPM0,SR ; выкл. CPU
DTMF FILTER    
inc COUNT  
cmp #20,COUNT ; 20 отсчётов принято?
jlo RufinunTRKa Кпмпяпя FILTER ; нет Ч9Ч

f& Texas iNSiraJMENTS   IV. Примеры конкретных применений
; проверка 1-го условия  
  cmp #THRE,MAXLO • Максимум для «ниж-
      • ней» группы ниже
      • порога?
  jlo FALSE • да, выход
  cmp #THRE,MAXHI • Максимум для «верх-
      • ней» группы ниже
      • порога?
  jlo FALSE ; да, выход
; проверка 2-ro условия  
  rra MAXLO • разделить MAXLO на 2
  cmp MAXLO,MAXHI • MAXHI > MAXL0/2
  jlo FALSE • да, выход
  rla MAXLO • восстановить MAXLO
  rra MAXHI • разделить MAXHI на 2
  cmp MAXHI,MAXLO • MAXLO > MAXHI/2
  jlo FALSE • да, выход
  cmp #LENGTH,LCOUNT ; длительность сигна-

DISPLAY

FALSE

FALSE1


DISPLAY

 

inc LCOUNT
jmp CONTINUE
bit #01h,FLAG REG
jnz CONTINUE
add ROW,COL
mov.b DTMF Tab (COL)
bis #01h,FLAG REG
jmp CONTINUE
tst LCOUNT
jnz FALSE1
mov.b #008h,DISPL+3
mov.b #008h,DISPL+4
bic #01h,FLAG REG
jmp CONTINUE
dec LCOUNT

ла достаточна? да, переход к отоб­ражению

нет, инкремент счёт­чика длительности

проверка флага распознавание завер­шено

суммировать строку и столбец таблицы DISPL ; отобразить символ DTMF установить флаг

; отобразить паузу ; « «

; очистить флаг