Hola , Para poder generar de forma simple DTMF con un PIC del tipo 16f628 o cualquiera de Intel puedes usar el software PICBASICPRO que es muy simple de usar y en ves de programar en assembler lo haces en otro lenguaje , lo que tiene de bueno es que hay un comando llamado DTMF OUT en donde pones la salida que quieres y ya esta sin mas vueltas , pero lo mejor es que el manual con todos los comandos esta en Internet y esta en español , ademas te permite combinar partes del programa en assembler .Para poder decodificar DTMF nunca he usado un PIC pero si el siguiente intergrado : MT88L70
Decodificador DTMF económico
Con sólo un circuito integrado (cuyo precio no supera los 2 dólares) y un puñado de componentes externos discretos se obtiene un dispositivo capaz de entregar el código binario de la tecla pulsada en un teléfono por tonos multifrecuentes. Este circuito, además de decodificar las clásicas teclas del cero al nueve, asterisco y numeral, puede identificar las teclas A, B, C y D que usualmente no están presentes en la mayoría de los teléfonos comerciales, pero que la especificación DTMF las incluye.
El circuito está preparado para ser alimentado con 5v, presentes en cualquier circuito TTL o microcontrolado. La resistencia de 100 ohms limita la corriente y el diodo zener hace las veces de limitador de tensión, bajándola a 3.6v que es lo que el chip requiere para funcionar correctamente. Los capacitores aledaños a esos componentes cumplen con la función de filtrar la tensión de alimentación. La señal proveniente de la línea telefónica es aislada por medio de dos resistencias de 100K y un capacitor de 100nf. Este último impide el paso de corriente, pero deja circular señal de audio. Para su funcionamiento el circuito integrado requiere una base de tiempos, generada en este caso por el cristal de cuarzo de 3.579545MHz. Nótese que este cristal es muy común en el mercado dado que es el empleado para los
sistemas de color de los equipos de TV. Una vez que un tono es recibido, decodificado y validado como correcto su valor binario es colocado en los terminales Q1, Q2 Q3 y Q4. A su vez, el terminal SID sube indicando la presencia del dato en la salida. Este terminal permanece alto durante el tiempo que el tono DTMF siga presente en el sistema, o sea que refleja el tiempo que el teléfono remoto permanece pulsado.
El circuito integrado incluye filtros contra ruido, RF y armónicos. Además, incluye controles automáticos de ganancia y nivel de señal para adecuar cualquier tipo de condición de trabajo. Es por ello que la cantidad de componentes externos es ínfima.
Datos presentes en la salida
Tecla Q1 Q2 Q3 Q4
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
0 1 0 1 0
* 1 0 1 1
# 1 1 0 0
A 1 1 0 1
B 1 1 1 0
C 1 1 1 1
D 0 0 0 0
El circuito esta en PABLIN.com , si encontras como hacerlo con el PIC avisame , tambien si no conseguis el otro manual asi te lo mando , saludos