Hola
El pic puede generar codigos DTMF correctamente pero se han de tener en cuenta ciertas consideraciones:
hay que poner una red de filtrado a la salida de la patilla por la que se genera el codigo, con dos secciones una para convertir la onda cuadrada generada en sinusoidal y otra para un filtro paso bajos para eliminar los armonicos, todo ello seguido de un operacional para adaptar impedancias, y si la salida de señal de este no es muy alta, otro operacional para lograr un mayor nivel de salida.
Esto lo acoplamos al interface de linea.
Con respecto a la `programación se puede usar la orden si usas PicBasic
DTMFOUT Pin, { Onms ,Offms,} [ Tone {,Tone} ]
controlando un poco la duracion del tono DTMF
Yo he usado una frecuencia de reloj de 20Mhz y un pic 16F84 pero seguro que se puede bajar la frecuencia de reloj.
El punto critico de todo esto son los filtros y el adaptador de nivel.
Si necesitas el esquema puedo enviartelo
Saludos