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

.byte a+b+d+e+g     отображает «2»
.byte a+b+c+d+g     отображает «3»
.byte a+b+c+e+f+g   отображает «А»
.byte b+c+f+g     отображает «4»
.byte a+c+d+f+g     отображает «5»
.byte a+c+d+e+f+g   отображает «6»
.byte c+d+e+f+g     отображает «В» b
.byte a+b+c     отображает «7»
.byte a+b+c+d+e+f+g   отображает «8»
.byte a+b+c+d+f+g   отображает «9»
.byte a+d+e+f     отображает «С»
.byte a+d+e+f+g     отображает «Е»
.byte a+b+c+d+e+f   отображает «0»
.byte a+e+f+g     отображает «F»
.byte b+c+d+e+g     отображает «D» d
. ***************** ********** * * * * *************- t********
; Таблица векторов прерываний    
. ***************** ********** * * * * *************- t********
. sect «Int Vect» ,OffeOh  
.word INIT   ПортО, биты от 2 цо 7
.word INIT   Базовый таймер Basic Timer
.word INIT   нет источника  
.word INIT   нет источника  
.word INIT   таймер-порт Timer Port
.word AD INT   завершение преобразования
      АЦП    
.word INIT   нет источника  
.word INIT   нет источника  
.word INIT   нет источника  
.word INIT   нет источника  
.word INIT   Watchdog/Timer, режим Timer
.word INIT   нет источника  
.word TIM 8B   8-битный таймер Timer
      (РО 0 Int)  
.word INIT   Пора 1 0.0  
.word INIT   NMI, срыв генерации
.word INIT   POR,   внеш. Reset, Watchdog