Autor Tema: Guía para el TRANSCEIVER MT8889 y similares  (Leído 5804 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
Guía para el TRANSCEIVER MT8889 y similares
« en: 04 de Enero de 2006, 13:05:00 »
Hola amigos, este espacio estará dedicado al uso del los transceiver MT8889 y similares como el MT8888, MT8880. Entre todos podremos sacarle el máximo rendimiento a estos IC.

Aquí les dejo un diagrama y código para el uso del MT8889 y con algunas modificaciones se pueden usar para el MT888X. Básicamente este programa relaiza una llamada a un número y espera que se presione la tecla "*" (asterisco) para finalizar la llamada.

Espero que les sea de mucha utilidad <img   src="http://pics.miarroba.com/caretos/wink.gif" alt="Giño" title="Giño" />


PD: Grrr.... alguién sabe cómo hago para subir los archivos? me dice que no hay espacio.

Código: [Seleccionar]
; ###########################################################################
; NOMBRE   :   DEMO_DTMF.ASM
; FECHA      :   04/01/06
; XTAL      :   4MHZ
; DESCRIPCION   :   REALIZA UNA LLAMADA TELEFONICA Y ESPERA QUE SE PRESIONE
;         LA TECLA * (ASTERISCO) PARA FINALIZAR LA LLAMADA
; DISEÑADO POR   :   MARIO PASTOR PARA LOS AMIGOTES DEL FORO TODOPIC
; ###########################################################################

   LIST   P=16F877A
   RADIX   DEC
   ERRORLEVEL   -302
     
   INCLUDE   "P16F877A.INC"
   __CONFIG 0X3F71

; ###########################################################################
;          DEFINICION DE LA MEMORIA RAM
; ###########################################################################
   CBLOCK   0X20
      DEMO_1,DEMO_2,DEMO_CONT
      DTMF_TX,DTMF_RX
   ENDC         

; ####################################################################
;         DEFINICION DE IGUALDADES
; ####################################################################
; SE DEFINEN PINES DE PORTA
#DEFINE   TELF      PORTA,3
#DEFINE   DTMF_D3      PORTA,5
#DEFINE   DTMF_TRIS3   TRISA,5

; SE DEFINEN PINES DE PORTC
#DEFINE   DTMF_IRQ   PORTC,1
#DEFINE   DTMF_DS      PORTC,2
#DEFINE   DTMF_RS0   PORTC,3

; SE DEFINEN PINES DE PORTD
#DEFINE   DTMF_RW      PORTD,0
#DEFINE   DTMF_CS      PORTD,1

; SE DEFINEN PINES DE PORTE
#DEFINE   DTMF_D2      PORTE,0
#DEFINE   DTMF_TRIS2   TRISE,0
#DEFINE   DTMF_D1      PORTE,1
#DEFINE   DTMF_TRIS1   TRISE,1
#DEFINE   DTMF_D0      PORTE,2
#DEFINE   DTMF_TRIS0   TRISE,2

; ####################################################################
;         DEFINICION DE MACROS
; ####################################################################
BANK_0   MACRO
   BCF   STATUS,RP0
   BCF   STATUS,RP1
   ENDM

BANK_1   MACRO
   BSF   STATUS,RP0
   BCF   STATUS,RP1
   ENDM

BANK_2   MACRO
   BCF   STATUS,RP0
   BSF   STATUS,RP1
   ENDM

BANK_3   MACRO
   BSF   STATUS,RP0
   BSF   STATUS,RP1
   ENDM

PAGE_0   MACRO
   BCF   PCLATH,3
   BCF   PCLATH,4
   ENDM

PAGE_1   MACRO
   BSF   PCLATH,3
   BCF   PCLATH,4
   ENDM

; ###########################################################################
   ORG   0X00
   NOP
   GOTO   INICIO
   ORG   0X05

; ###########################################################################
;         RUTINA DE CONFIGURACION
; ###########################################################################
; CONFIGURACIONES INICIALES DEL PIC
CONFIGURACION
   BANK_0
   MOVLW   B"00000000"      ;TELF=0 (COLGADO),X,X,X
   MOVWF   PORTA
   MOVLW   B"00000000"      ;DTMF_RS0=0,DTMF_DS=0,X,X
   MOVWF   PORTC
   MOVLW   B"00000011"      ;DTMF_CS=1,DTMF_RW=1
   MOVWF   PORTD
   BSF   OPTION_REG,NOT_RBPU    ;NO PULL UP
   BANK_1
   MOVLW   B"00000111"      ;PORTA COMO E/S DIGITALES
   MOVWF   ADCON1
   MOVLW   B"00000000"      ;TODOS COMO SALIDA
   MOVWF   TRISA
   MOVLW   B"00000010"      ;RC1=ENTRADA PARA EL DTMF_IRQ
   MOVWF   TRISC
   MOVLW   B"00000000"      ;TODOS COMO SALIDA
   MOVWF   TRISD
   MOVLW   B"00000111"      ;TODOS COMO ENTRADA
   MOVWF   TRISE
   BANK_0
   RETURN


; ###########################################################################
;          RUTINAS DE RETARDO
; ###########################################################################
; EL RETARDO GENERADO ES DE APROXIMADAMENTE 5 MS PARA UN XTAL DE 4MHZ
; REGISTROS USADOS: DEMO_1,DEMO_2
DEMO_5MS
   MOVLW   .10
   MOVWF   DEMO_1
   MOVLW   .165
   MOVWF   DEMO_2
   DECFSZ   DEMO_2,F
   GOTO   $-1
   DECFSZ   DEMO_1,F
   GOTO   $-5
   RETURN

; ###########################################################################
; RUTINA QUE GENERA RETARDOS MULTIPLOS A 5MS DEPENDIENDO DEL VALOR QUE SE
; PONGA EN EL REGISTRO W.
; REGISTROS USADOS: DEMO_CONT
DEMO_VMS
   MOVWF   DEMO_CONT
   CALL   DEMO_5MS
   DECFSZ   DEMO_CONT,F
   GOTO   $-2
   RETURN


; ###########################################################################
;         RUTINAS PARA EL MT8889
; ###########################################################################
;
;     |    |     |     |     |     |     |     |     |     |
;    ----------------------------------------------------------
;   | VDD  ST/   EST   D3    D2    D1    D0   /IRQ    DS   RS0 |
;   |      GT               CP          |
;   |                        |
;   |         MT8889               |
;   |                        |
;   |                         |
;   | IN+   IN-   GS   VREF  VSS   OSC1  OSC2  TONE  R/W  /CS  |
;    ----------------------------------------------------------
;     |     |     |     |     |     |     |     |     |     |
;
; ###########################################################################
; SE DEFINEN LOS TONOS DTMF
TONO_1      EQU   B"00000001"
TONO_2      EQU   B"00000010"
TONO_3      EQU   B"00000011"
TONO_4      EQU   B"00000100"
TONO_5      EQU   B"00000101"
TONO_6      EQU   B"00000110"
TONO_7      EQU   B"00000111"
TONO_8      EQU   B"00001000"
TONO_9      EQU   B"00001001"
TONO_0      EQU   B"00001010"
TONO_AST   EQU   B"00001011"
TONO_#      EQU   B"00001100"
TONO_A      EQU   B"00001101"
TONO_B      EQU   B"00001110"
TONO_C      EQU   B"00001111"
TONO_D      EQU   B"00000000"

#DEFINE   DTMF_COMD_MODE   BSF   DTMF_RS0
#DEFINE   DTMF_DATO_MODE   BCF   DTMF_RS0

; ###########################################################################
; INICIALIZACION DEL MT8889 SEGUN DATASHEET
UP_MT8889
; ESTA SECUENCIA ES LA QUE SE ENCUENTRAN EN EL DATASHEET
   MOVLW   20         ;SECUENCIA ESTABLECIDA POR FABRICANTE
   CALL   DEMO_VMS      ;RETARDO PARA ESTABILIZACION (100MS)
   DTMF_COMD_MODE
   CALL   READ_MT8889      ;1° LECTURA DE STATUS REGISTER
   MOVLW   B"00000000"      ;2° ESCRITURA DE CONTROL REGISTER
   CALL   WRITE_MT8889
   MOVLW   B"00000000"      ;3° ESCRITURA DE CONTROL REGISTER
   CALL   WRITE_MT8889
   MOVLW   B"00001000"      ;4° ESCRITURA DE CONTROL REGISTER
   CALL   WRITE_MT8889
   MOVLW   B"00000000"      ;5° ESCRITURA DE CONTROL REGISTER
   CALL   WRITE_MT8889
   CALL   READ_MT8889      ;6° LECTURA DE STATUS REGISTER

; AQUI REALIZAMOS LA CONFIGURACION QUE DESEAMOS
   MOVLW   B"00001000"      ;ESCRITURA EN CRA
   CALL   WRITE_MT8889      ;SELEC CRB, NO_IRQ, DTMF_MODE, NO_TONO
   MOVLW   B"00000000"      ;ESCRITURA EN CRB
   CALL   WRITE_MT8889      ;DUAL_TONE, NO_TEST, BURST MODE
   CALL   READ_MT8889      ;LECTURA DE STATUS REGISTER
   RETURN

; ###########################################################################
; PERMITE LA LECTURA DEL MT8889
; REGISTROS USADOS: DTMF_RX
READ_MT8889
   BANK_1
   BSF   DTMF_TRIS3      ;CONFIGURA PUERTO COMO ENTRADA
   BSF   DTMF_TRIS2
   BSF   DTMF_TRIS1
   BSF   DTMF_TRIS0
   BANK_0
   BSF   DTMF_RW         ;MODO LECTURA
   BCF   DTMF_CS         ;ACTIVA IC
   BSF   DTMF_DS         ;CLOCK
   CLRF   DTMF_RX         ;BORRAMOS REGISTRO PARA RECEPCION
   BTFSC   DTMF_D0
   BSF   DTMF_RX,0
   BTFSC   DTMF_D1
   BSF   DTMF_RX,1
   BTFSC   DTMF_D2
   BSF   DTMF_RX,2
   BTFSC   DTMF_D3
   BSF   DTMF_RX,3
   NOP
   BCF   DTMF_DS         ;CLOCK
   BSF   DTMF_CS         ;DESACTIVAMOS IC
   RETURN   

; ###########################################################################
; PERMITE LA ESCRITURA DEL MT8889
; REGISTROS USADOS: DTMF_TX
WRITE_MT8889
   MOVWF   DTMF_TX
   BANK_1
   BCF   DTMF_TRIS3      ;CONFIGURA PUERTO COMO SALIDA
   BCF   DTMF_TRIS2
   BCF   DTMF_TRIS1
   BCF   DTMF_TRIS0
   BANK_0
   BCF   DTMF_D0         ;POR DEFECTO TODOS A CERO
   BCF   DTMF_D1
   BCF   DTMF_D2
   BCF   DTMF_D3
   BTFSC   DTMF_TX,0
   BSF   DTMF_D0
   BTFSC   DTMF_TX,1
   BSF   DTMF_D1
   BTFSC   DTMF_TX,2
   BSF   DTMF_D2
   BTFSC   DTMF_TX,3
   BSF   DTMF_D3
   NOP
   BCF   DTMF_RW         ;MODO ESCRITURA
   BCF   DTMF_CS         ;ACTIVA IC
   BSF   DTMF_DS         ;CLOCK
   NOP
   BCF   DTMF_DS         ;CLOCK
   BSF   DTMF_CS         ;DESACTIVAMOS IC
   BSF   DTMF_RW         ;MODO LECTURA
   BANK_1
   BSF   DTMF_TRIS3      ;CONFIGURA PUERTO COMO ENTRADA
   BSF   DTMF_TRIS2
   BSF   DTMF_TRIS1
   BSF   DTMF_TRIS0
   BANK_0
   RETURN

; ###########################################################################
; TRASMITE EL EQUIVALENTE DTMF DE UN NUMERO CON DURACION ESTANDAR
MARCA_DTMF
   DTMF_DATO_MODE
   CALL   WRITE_MT8889      ;TX SU EQUIVALENTE EN DTMF
   DTMF_COMD_MODE
   BSF   DTMF_RW         ;MODO LECTURA
MARCA_DTMF_A
   BCF   DTMF_CS         ;ACTIVA IC
   BSF   DTMF_DS         ;CLOCK
   BTFSC   DTMF_D1         ;BUFFER LIBRE PARA SIGUIENTE TX?
   GOTO   MARCA_DTMF_B      ;SI
   BCF   DTMF_DS         ;NO
   BSF   DTMF_CS         ;DESACTIVAMOS IC
   GOTO   MARCA_DTMF_A      ;SEGUIMOS CON LA ESPERA
MARCA_DTMF_B
   BCF   DTMF_DS         ;CLOCK
   BSF   DTMF_CS         ;DESACTIVAMOS IC
   BSF   DTMF_RW         ;MODO LECTURA
   RETURN


; ###########################################################################
;          INICIO DEL PROGRAMA
; ###########################################################################
INICIO
   CALL   CONFIGURACION      ;CONFIGURAMOS EL PIC
   CALL   UP_MT8889      ;INICIALIZAMOS EL MT8889
   MOVLW   200         ;ESPERAMOS 2 SEGUNDOS O LO QUE SE DESEE
   CALL   DEMO_VMS
   MOVLW   200
   CALL   DEMO_VMS

LLAMADA
   BSF   TELF         ;DESCOLGAMOS TELEFONO
   MOVLW   200         ;ESPERAMOS 2 SEGUNDOS PARA CONEXION
   CALL   DEMO_VMS      ;ESTO PUEDE VARIAR SEGUN EL PROOVEDOR
   MOVLW   200
   CALL   DEMO_VMS
   
; AQUI HABILITAMOS LA GENERACION DE TONO DTMF (CRA,B0)
   DTMF_COMD_MODE
   MOVLW   B"00000001"      ;NO_SELEC CRB, NO_IRQ, DTMF_MODE, TONO
   CALL   WRITE_MT8889
   CALL   READ_MT8889      ;LECTURA DEL STATUS PARA BORRAR FLAGS

; REALIZAMOS LA LLAMADA AL NUMERO DESEADO, EN MI CASO LLAMO A MI CELULAR.
; PUEDES AGREGAR O QUITAR NUMEROS, TAMBIEN SE PUEDE HACER UNA RUTINA PARA
; REDUCIR CODIGO... ESO TE LO DEJO COMO TAREA Giño
   MOVLW   TONO_9
   CALL   MARCA_DTMF      ;TX SU EQUIVALENTE EN DTMF
   MOVLW   TONO_7
   CALL   MARCA_DTMF      ;TX SU EQUIVALENTE EN DTMF
   MOVLW   TONO_8
   CALL   MARCA_DTMF      ;TX SU EQUIVALENTE EN DTMF
   MOVLW   TONO_4
   CALL   MARCA_DTMF      ;TX SU EQUIVALENTE EN DTMF
   MOVLW   TONO_8
   CALL   MARCA_DTMF      ;TX SU EQUIVALENTE EN DTMF
   MOVLW   TONO_3
   CALL   MARCA_DTMF      ;TX SU EQUIVALENTE EN DTMF
   MOVLW   TONO_2
   CALL   MARCA_DTMF      ;TX SU EQUIVALENTE EN DTMF
   MOVLW   TONO_8
   CALL   MARCA_DTMF      ;TX SU EQUIVALENTE EN DTMF

; AQUI HABILITAMOS LA INTERRUPCION DEL MT8889 (NIVEL LOGICO 0) CUANDO SE
; DETECTE UN TONO DTMF.
   DTMF_COMD_MODE
   MOVLW   B"00000100"      ;NO_SELEC CRB, IRQ, DTMF_MODE, NO_TONO
   CALL   WRITE_MT8889
   CALL   READ_MT8889      ;LECTURA DEL STATUS PARA BORRAR FLAGS

ESPERA
   BTFSC   DTMF_IRQ      ;INTERRUPCION POR RX DE TONO DTMF?
   GOTO   ESPERA         ;NO

   DTMF_DATO_MODE         ;SI
   CALL   READ_MT8889      ;LECTURA DE TONO RECIBIDO
   MOVLW   TONO_AST
   XORWF   DTMF_RX,W
   BTFSS   STATUS,Z      ;EL DATO RECIBIDO ES *?
   GOTO   ESPERA         ;NO
   
FIN_LLAMADA
   MOVLW   200         ;ESPERAMOS 1 SEGUNDO
   CALL   DEMO_VMS
   BCF   TELF         ;COLGAMOS TELEFONO
   
   GOTO   $         ;LAZO INFINITO

   END

« Última modificación: 15 de Mayo de 2006, 12:12:24 por mario_pastor »
Saludos,
Mario.

Lima - Perú

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #1 en: 04 de Enero de 2006, 13:36:00 »
Saludos,
Mario.

Lima - Perú

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #2 en: 04 de Enero de 2006, 17:01:00 »
El siguiente ejemplo muestra como trabajar con los MT8880. El diagrama muestra como se debe de conectar a la línea telefónica, en comparación con el MT8889, este lleva un transistor en la salida del tono. Esta misma técnica se puede usar para el MT8889, adjunto el diagrama.

Este es el link para descargar los archivos
http://miarroba.com/foros/ver.php?foroid=348538&temaid=4043220
Saludos,
Mario.

Lima - Perú

Desconectado sanpic

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 430
RE: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #3 en: 08 de Enero de 2006, 06:02:00 »
Gracias !!!!!!
Bien explicado todo.  
Giño
IF you_know = true THEN                                 
     share_it
ENDIF

Desconectado diegouny

  • PIC10
  • *
  • Mensajes: 3
RE: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #4 en: 01 de Febrero de 2006, 11:10:00 »
disculpe pero es que estoy confundido el mt8888 funciona igual que mt8889 y si no es asi que cambios requeriria pa lograr que funcione..  

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #5 en: 23 de Febrero de 2006, 07:02:00 »
Hola diegouny, disculpa la demora en la respuesta pero no se que está pasando con Mi @ que ya no me está enviando los emails cuando alguien responde.... en fin. Respondiendo a tu pregunta, los 2 trabajan igual sólo que difieren en cómo le envias los pulsos de control... en los ejemplo que deje podrás ver exactamente a lo que me refiero.

Saludos,
Mario.

Lima - Perú

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
Re: Guía para el TRANSCEIVER MT8889 y MT8880
« Respuesta #6 en: 22 de Abril de 2006, 13:03:47 »
Hola a todos, ya que muchos están interesados en este tema y me solicitan el código y diagrama... pues los dejo aquí.

EJEMPLO PARA EL MT8880

Código: [Seleccionar]
; ###########################################################################
; NOMBRE : DEMO_MT8880.ASM
; FECHA : 04/01/06
; XTAL : 4MHZ
; DESCRIPCION : REALIZA UNA LLAMADA TELEFONICA Y ESPERA QUE SE PRESIONE
; LA TECLA * (ASTERISCO) PARA FINALIZAR LA LLAMADA
; DISEÑADO POR : MARIO PASTOR PARA LOS AMIGOTES DEL FORO TODOPIC
; ###########################################################################

LIST P=16F877A
RADIX DEC
ERRORLEVEL -302

INCLUDE "P16F877A.INC"
__CONFIG 0X3F71

; ###########################################################################
; DEFINICION DE LA MEMORIA RAM
; ###########################################################################
CBLOCK 0X20
DEMO_1,DEMO_2,DEMO_CONT
DTMF_TX,DTMF_RX
ENDC

; ####################################################################
; DEFINICION DE IGUALDADES
; ####################################################################
; SE DEFINEN PINES DE PORTA
#DEFINE TELF PORTA,3
#DEFINE DTMF_D3 PORTA,5
#DEFINE DTMF_TRIS3 TRISA,5

; SE DEFINEN PINES DE PORTC
#DEFINE DTMF_IRQ PORTC,1
#DEFINE DTMF_f2 PORTC,2
#DEFINE DTMF_RS0 PORTC,3

; SE DEFINEN PINES DE PORTD
#DEFINE DTMF_RW PORTD,0

; SE DEFINEN PINES DE PORTE
#DEFINE DTMF_D2 PORTE,0
#DEFINE DTMF_TRIS2 TRISE,0
#DEFINE DTMF_D1 PORTE,1
#DEFINE DTMF_TRIS1 TRISE,1
#DEFINE DTMF_D0 PORTE,2
#DEFINE DTMF_TRIS0 TRISE,2

; ####################################################################
; DEFINICION DE MACROS
; ####################################################################
BANK_0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM

BANK_1 MACRO
BSF STATUS,RP0
BCF STATUS,RP1
ENDM

BANK_2 MACRO
BCF STATUS,RP0
BSF STATUS,RP1
ENDM

BANK_3 MACRO
BSF STATUS,RP0
BSF STATUS,RP1
ENDM

PAGE_0 MACRO
BCF PCLATH,3
BCF PCLATH,4
ENDM

PAGE_1 MACRO
BSF PCLATH,3
BCF PCLATH,4
ENDM

; ###########################################################################
ORG 0X00
NOP
GOTO INICIO
ORG 0X05

; ###########################################################################
; RUTINA DE CONFIGURACION
; ###########################################################################
; CONFIGURACIONES INICIALES DEL PIC
CONFIGURACION
BANK_0
MOVLW B'00000000' ;TELF=0 (COLGADO),X,X,X
MOVWF PORTA
MOVLW B'00000000' ;DTMF_RS0=0,DTMF_f2=0,X,X
MOVWF PORTC
MOVLW B'00000001' ;DTMF_RW=1
MOVWF PORTD
BSF OPTION_REG,NOT_RBPU ;NO PULL UP
BANK_1
MOVLW B'00000111' ;PORTA COMO E/S DIGITALES
MOVWF ADCON1
MOVLW B'00000000' ;TODOS COMO SALIDA
MOVWF TRISA
MOVLW B'00000010' ;RC1=ENTRADA PARA EL DTMF_IRQ
MOVWF TRISC
MOVLW B'00000000' ;TODOS COMO SALIDA
MOVWF TRISD
MOVLW B'00000111' ;TODOS COMO ENTRADA
MOVWF TRISE
BANK_0
RETURN


; ###########################################################################
; RUTINAS DE RETARDO
; ###########################################################################
; EL RETARDO GENERADO ES DE APROXIMADAMENTE 5 MS PARA UN XTAL DE 4MHZ
; REGISTROS USADOS: DEMO_1,DEMO_2
DEMO_5MS
MOVLW .10
MOVWF DEMO_1
MOVLW .165
MOVWF DEMO_2
DECFSZ DEMO_2,F
GOTO $-1
DECFSZ DEMO_1,F
GOTO $-5
RETURN

; ###########################################################################
; RUTINA QUE GENERA RETARDOS MULTIPLOS A 5MS DEPENDIENDO DEL VALOR QUE SE
; PONGA EN EL REGISTRO W.
; REGISTROS USADOS: DEMO_CONT
DEMO_VMS
MOVWF DEMO_CONT
CALL DEMO_5MS
DECFSZ DEMO_CONT,F
GOTO $-2
RETURN


; ###########################################################################
; RUTINAS PARA EL MT8880
; ###########################################################################
;
;   |     |     |     |     |     |     |     |     |     |
; ----------------------------------------------------------
; | VDD  ST/   EST   D3    D2    D1    D0   /IRQ    f2   RS0 |
; |    GT    CP    |
; |    |
; | MT8880    |
; |    |
; |    |
; | IN+   IN-   GS   VREF  VSS   OSC1 OSC2  TONE  R/W  /CS  |
; ----------------------------------------------------------
;   |     |     |     |     |     |     |     |     |     |
;
; ###########################################################################
; SE DEFINEN LOS TONOS DTMF
TONO_1 EQU B'00000001'
TONO_2 EQU B'00000010'
TONO_3 EQU B'00000011'
TONO_4 EQU B'00000100'
TONO_5 EQU B'00000101'
TONO_6 EQU B'00000110'
TONO_7 EQU B'00000111'
TONO_8 EQU B'00001000'
TONO_9 EQU B'00001001'
TONO_0 EQU B'00001010'
TONO_AST EQU B'00001011'
TONO_# EQU B'00001100'
TONO_A EQU B'00001101'
TONO_B EQU B'00001110'
TONO_C EQU B'00001111'
TONO_D EQU B'00000000'

#DEFINE DTMF_COMD_MODE BSF DTMF_RS0
#DEFINE DTMF_DATO_MODE BCF DTMF_RS0

; ###########################################################################
; INICIALIZACION DEL MT8880 SEGUN DATASHEET
UP_MT8880
; ESTA SECUENCIA ES LA QUE SE ENCUENTRAN EN EL DATASHEET
MOVLW 20 ;SECUENCIA ESTABLECIDA POR FABRICANTE
CALL DEMO_VMS ;RETARDO PARA ESTABILIZACION (100MS)
DTMF_COMD_MODE
CALL READ_MT8880 ;1° LECTURA DE STATUS REGISTER
MOVLW B'00000000' ;2° ESCRITURA DE CONTROL REGISTER
CALL WRITE_MT8880
MOVLW B'00000000' ;3° ESCRITURA DE CONTROL REGISTER
CALL WRITE_MT8880
MOVLW B'00001000' ;4° ESCRITURA DE CONTROL REGISTER
CALL WRITE_MT8880
MOVLW B'00000000' ;5° ESCRITURA DE CONTROL REGISTER
CALL WRITE_MT8880
CALL READ_MT8880 ;6° LECTURA DE STATUS REGISTER

; AQUI REALIZAMOS LA CONFIGURACION QUE DESEAMOS
MOVLW B'00001000' ;ESCRITURA EN CRA
CALL WRITE_MT8880 ;SELEC CRB, NO_IRQ, DTMF_MODE, NO_TONO
MOVLW B'00000000' ;ESCRITURA EN CRB
CALL WRITE_MT8880 ;DUAL_TONE, NO_TEST, BURST MODE
CALL READ_MT8880 ;LECTURA DE STATUS REGISTER
RETURN

; ###########################################################################
; PERMITE LA LECTURA DEL MT8880
; REGISTROS USADOS: DTMF_RX
READ_MT8880
BANK_1
BSF DTMF_TRIS3 ;CONFIGURA PUERTO COMO ENTRADA
BSF DTMF_TRIS2
BSF DTMF_TRIS1
BSF DTMF_TRIS0
BANK_0
BSF DTMF_RW ;MODO LECTURA
BSF DTMF_f2 ;CLOCK
CLRF DTMF_RX ;BORRAMOS REGISTRO PARA RECEPCION
BTFSC DTMF_D0
BSF DTMF_RX,0
BTFSC DTMF_D1
BSF DTMF_RX,1
BTFSC DTMF_D2
BSF DTMF_RX,2
BTFSC DTMF_D3
BSF DTMF_RX,3
NOP
BCF DTMF_f2 ;CLOCK
RETURN

; ###########################################################################
; PERMITE LA ESCRITURA DEL MT8880
; REGISTROS USADOS: DTMF_TX
WRITE_MT8880
MOVWF DTMF_TX
BANK_1
BCF DTMF_TRIS3 ;CONFIGURA PUERTO COMO SALIDA
BCF DTMF_TRIS2
BCF DTMF_TRIS1
BCF DTMF_TRIS0
BANK_0
BCF DTMF_D0 ;POR DEFECTO TODOS A CERO
BCF DTMF_D1
BCF DTMF_D2
BCF DTMF_D3
BTFSC DTMF_TX,0
BSF DTMF_D0
BTFSC DTMF_TX,1
BSF DTMF_D1
BTFSC DTMF_TX,2
BSF DTMF_D2
BTFSC DTMF_TX,3
BSF DTMF_D3
NOP
BCF DTMF_RW ;MODO ESCRITURA
BSF DTMF_f2 ;CLOCK
NOP
BCF DTMF_f2 ;CLOCK
BSF DTMF_RW ;MODO LECTURA
BANK_1
BSF DTMF_TRIS3 ;CONFIGURA PUERTO COMO ENTRADA
BSF DTMF_TRIS2
BSF DTMF_TRIS1
BSF DTMF_TRIS0
BANK_0
RETURN

; ###########################################################################
; TRASMITE EL EQUIVALENTE DTMF DE UN NUMERO CON DURACION ESTANDAR
MARCA_DTMF
DTMF_DATO_MODE
CALL WRITE_MT8880 ;TX SU EQUIVALENTE EN DTMF
DTMF_COMD_MODE
BSF DTMF_RW ;MODO LECTURA
MARCA_DTMF_A
BSF DTMF_f2 ;CLOCK
NOP
BTFSC DTMF_D1 ;BUFFER LIBRE PARA SIGUIENTE TX?
GOTO MARCA_DTMF_B ;SI
BCF DTMF_f2 ;NO
GOTO MARCA_DTMF_A ;SEGUIMOS CON LA ESPERA
MARCA_DTMF_B
BCF DTMF_f2 ;CLOCK
BSF DTMF_RW ;MODO LECTURA
RETURN


; ###########################################################################
; INICIO DEL PROGRAMA
; ###########################################################################
INICIO
CALL CONFIGURACION ;CONFIGURAMOS EL PIC
CALL UP_MT8880 ;INICIALIZAMOS EL MT8880
MOVLW 200 ;ESPERAMOS 2 SEGUNDOS O LO QUE SE DESEE
CALL DEMO_VMS
MOVLW 200
CALL DEMO_VMS

LLAMADA
BSF TELF ;DESCOLGAMOS TELEFONO
MOVLW 200 ;ESPERAMOS 2 SEGUNDOS PARA CONEXION
CALL DEMO_VMS ;ESTO PUEDE VARIAR SEGUN EL PROOVEDOR
MOVLW 200
CALL DEMO_VMS

; AQUI HABILITAMOS LA GENERACION DE TONO DTMF (CRA,B0)
DTMF_COMD_MODE
MOVLW B'00000001' ;NO_SELEC CRB, NO_IRQ, DTMF_MODE, TONO
CALL WRITE_MT8880
CALL READ_MT8880 ;LECTURA DEL STATUS PARA BORRAR FLAGS

; REALIZAMOS LA LLAMADA AL NUMERO DESEADO, EN MI CASO LLAMO A MI CELULAR.
; PUEDES AGREGAR O QUITAR NUMEROS, TAMBIEN SE PUEDE HACER UNA RUTINA PARA
; REDUCIR CODIGO... ESO TE LO DEJO COMO TAREA ;)
MOVLW TONO_2
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_2
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_6
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_4
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_3
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_0
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_6
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
; MOVLW TONO_8
; CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF

; AQUI HABILITAMOS LA INTERRUPCION DEL MT8880 (NIVEL LOGICO 0) CUANDO SE
; DETECTE UN TONO DTMF.
DTMF_COMD_MODE
MOVLW B'00000100' ;NO_SELEC CRB, IRQ, DTMF_MODE, NO_TONO
CALL WRITE_MT8880
CALL READ_MT8880 ;LECTURA DEL STATUS PARA BORRAR FLAGS

ESPERA
BTFSC DTMF_IRQ ;INTERRUPCION POR RX DE TONO DTMF?
GOTO ESPERA ;NO

DTMF_DATO_MODE ;SI
CALL READ_MT8880 ;LECTURA DE TONO RECIBIDO
MOVLW TONO_AST
XORWF DTMF_RX,W
BTFSS STATUS,Z ;EL DATO RECIBIDO ES *?
GOTO ESPERA ;NO

FIN_LLAMADA
MOVLW 200 ;ESPERAMOS 1 SEGUNDO
CALL DEMO_VMS
BCF TELF ;COLGAMOS TELEFONO

GOTO $ ;LAZO INFINITO

END

Saludos,
Mario.

Lima - Perú

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
Re: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #7 en: 22 de Abril de 2006, 13:04:53 »
EJEMPLO PARA EL MT8889

Código: [Seleccionar]
; ###########################################################################
; NOMBRE : DEMO_DTMF.ASM
; FECHA : 04/01/06
; XTAL : 4MHZ
; DESCRIPCION : REALIZA UNA LLAMADA TELEFONICA Y ESPERA QUE SE PRESIONE
; LA TECLA * (ASTERISCO) PARA FINALIZAR LA LLAMADA
; DISEÑADO POR : MARIO PASTOR PARA LOS AMIGOTES DEL FORO TODOPIC
; ###########################################################################

LIST P=16F877A
RADIX DEC
ERRORLEVEL -302

INCLUDE "P16F877A.INC"
__CONFIG 0X3F71

; ###########################################################################
; DEFINICION DE LA MEMORIA RAM
; ###########################################################################
CBLOCK 0X20
DEMO_1,DEMO_2,DEMO_CONT
DTMF_TX,DTMF_RX
ENDC

; ####################################################################
; DEFINICION DE IGUALDADES
; ####################################################################
; SE DEFINEN PINES DE PORTA
#DEFINE TELF PORTA,3
#DEFINE DTMF_D3 PORTA,5
#DEFINE DTMF_TRIS3 TRISA,5

; SE DEFINEN PINES DE PORTC
#DEFINE DTMF_IRQ PORTC,1
#DEFINE DTMF_DS PORTC,2
#DEFINE DTMF_RS0 PORTC,3

; SE DEFINEN PINES DE PORTD
#DEFINE DTMF_RW PORTD,0
#DEFINE DTMF_CS PORTD,1

; SE DEFINEN PINES DE PORTE
#DEFINE DTMF_D2 PORTE,0
#DEFINE DTMF_TRIS2 TRISE,0
#DEFINE DTMF_D1 PORTE,1
#DEFINE DTMF_TRIS1 TRISE,1
#DEFINE DTMF_D0 PORTE,2
#DEFINE DTMF_TRIS0 TRISE,2

; ####################################################################
; DEFINICION DE MACROS
; ####################################################################
BANK_0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM

BANK_1 MACRO
BSF STATUS,RP0
BCF STATUS,RP1
ENDM

BANK_2 MACRO
BCF STATUS,RP0
BSF STATUS,RP1
ENDM

BANK_3 MACRO
BSF STATUS,RP0
BSF STATUS,RP1
ENDM

PAGE_0 MACRO
BCF PCLATH,3
BCF PCLATH,4
ENDM

PAGE_1 MACRO
BSF PCLATH,3
BCF PCLATH,4
ENDM

; ###########################################################################
ORG 0X00
NOP
GOTO INICIO
ORG 0X05

; ###########################################################################
; RUTINA DE CONFIGURACION
; ###########################################################################
; CONFIGURACIONES INICIALES DEL PIC
CONFIGURACION
BANK_0
MOVLW B'00000000' ;TELF=0 (COLGADO),X,X,X
MOVWF PORTA
MOVLW B'00000000' ;DTMF_RS0=0,DTMF_DS=0,X,X
MOVWF PORTC
MOVLW B'00000011' ;DTMF_CS=1,DTMF_RW=1
MOVWF PORTD
BSF OPTION_REG,NOT_RBPU ;NO PULL UP
BANK_1
MOVLW B'00000111' ;PORTA COMO E/S DIGITALES
MOVWF ADCON1
MOVLW B'00000000' ;TODOS COMO SALIDA
MOVWF TRISA
MOVLW B'00000010' ;RC1=ENTRADA PARA EL DTMF_IRQ
MOVWF TRISC
MOVLW B'00000000' ;TODOS COMO SALIDA
MOVWF TRISD
MOVLW B'00000111' ;TODOS COMO ENTRADA
MOVWF TRISE
BANK_0
RETURN


; ###########################################################################
; RUTINAS DE RETARDO
; ###########################################################################
; EL RETARDO GENERADO ES DE APROXIMADAMENTE 5 MS PARA UN XTAL DE 4MHZ
; REGISTROS USADOS: DEMO_1,DEMO_2
DEMO_5MS
MOVLW .10
MOVWF DEMO_1
MOVLW .165
MOVWF DEMO_2
DECFSZ DEMO_2,F
GOTO $-1
DECFSZ DEMO_1,F
GOTO $-5
RETURN

; ###########################################################################
; RUTINA QUE GENERA RETARDOS MULTIPLOS A 5MS DEPENDIENDO DEL VALOR QUE SE
; PONGA EN EL REGISTRO W.
; REGISTROS USADOS: DEMO_CONT
DEMO_VMS
MOVWF DEMO_CONT
CALL DEMO_5MS
DECFSZ DEMO_CONT,F
GOTO $-2
RETURN


; ###########################################################################
; RUTINAS PARA EL MT8889
; ###########################################################################
;
;   |     |     |     |     |     |     |     |     |     |
; ----------------------------------------------------------
; | VDD  ST/   EST   D3    D2    D1    D0   /IRQ    DS   RS0 |
; |    GT    CP    |
; |    |
; | MT8889    |
; |    |
; |    |
; | IN+   IN-   GS   VREF  VSS   OSC1 OSC2  TONE  R/W  /CS  |
; ----------------------------------------------------------
;   |     |     |     |     |     |     |     |     |     |
;
; ###########################################################################
; SE DEFINEN LOS TONOS DTMF
TONO_1 EQU B'00000001'
TONO_2 EQU B'00000010'
TONO_3 EQU B'00000011'
TONO_4 EQU B'00000100'
TONO_5 EQU B'00000101'
TONO_6 EQU B'00000110'
TONO_7 EQU B'00000111'
TONO_8 EQU B'00001000'
TONO_9 EQU B'00001001'
TONO_0 EQU B'00001010'
TONO_AST EQU B'00001011'
TONO_# EQU B'00001100'
TONO_A EQU B'00001101'
TONO_B EQU B'00001110'
TONO_C EQU B'00001111'
TONO_D EQU B'00000000'

#DEFINE DTMF_COMD_MODE BSF DTMF_RS0
#DEFINE DTMF_DATO_MODE BCF DTMF_RS0

; ###########################################################################
; INICIALIZACION DEL MT8889 SEGUN DATASHEET
UP_MT8889
; ESTA SECUENCIA ES LA QUE SE ENCUENTRAN EN EL DATASHEET
MOVLW 20 ;SECUENCIA ESTABLECIDA POR FABRICANTE
CALL DEMO_VMS ;RETARDO PARA ESTABILIZACION (100MS)
DTMF_COMD_MODE
CALL READ_MT8889 ;1° LECTURA DE STATUS REGISTER
MOVLW B'00000000' ;2° ESCRITURA DE CONTROL REGISTER
CALL WRITE_MT8889
MOVLW B'00000000' ;3° ESCRITURA DE CONTROL REGISTER
CALL WRITE_MT8889
MOVLW B'00001000' ;4° ESCRITURA DE CONTROL REGISTER
CALL WRITE_MT8889
MOVLW B'00000000' ;5° ESCRITURA DE CONTROL REGISTER
CALL WRITE_MT8889
CALL READ_MT8889 ;6° LECTURA DE STATUS REGISTER

; AQUI REALIZAMOS LA CONFIGURACION QUE DESEAMOS
MOVLW B'00001000' ;ESCRITURA EN CRA
CALL WRITE_MT8889 ;SELEC CRB, NO_IRQ, DTMF_MODE, NO_TONO
MOVLW B'00000000' ;ESCRITURA EN CRB
CALL WRITE_MT8889 ;DUAL_TONE, NO_TEST, BURST MODE
CALL READ_MT8889 ;LECTURA DE STATUS REGISTER
RETURN

; ###########################################################################
; PERMITE LA LECTURA DEL MT8889
; REGISTROS USADOS: DTMF_RX
READ_MT8889
BANK_1
BSF DTMF_TRIS3 ;CONFIGURA PUERTO COMO ENTRADA
BSF DTMF_TRIS2
BSF DTMF_TRIS1
BSF DTMF_TRIS0
BANK_0
BSF DTMF_RW ;MODO LECTURA
BCF DTMF_CS ;ACTIVA IC
BSF DTMF_DS ;CLOCK
CLRF DTMF_RX ;BORRAMOS REGISTRO PARA RECEPCION
BTFSC DTMF_D0
BSF DTMF_RX,0
BTFSC DTMF_D1
BSF DTMF_RX,1
BTFSC DTMF_D2
BSF DTMF_RX,2
BTFSC DTMF_D3
BSF DTMF_RX,3
NOP
BCF DTMF_DS ;CLOCK
BSF DTMF_CS ;DESACTIVAMOS IC
RETURN

; ###########################################################################
; PERMITE LA ESCRITURA DEL MT8889
; REGISTROS USADOS: DTMF_TX
WRITE_MT8889
MOVWF DTMF_TX
BANK_1
BCF DTMF_TRIS3 ;CONFIGURA PUERTO COMO SALIDA
BCF DTMF_TRIS2
BCF DTMF_TRIS1
BCF DTMF_TRIS0
BANK_0
BCF DTMF_D0 ;POR DEFECTO TODOS A CERO
BCF DTMF_D1
BCF DTMF_D2
BCF DTMF_D3
BTFSC DTMF_TX,0
BSF DTMF_D0
BTFSC DTMF_TX,1
BSF DTMF_D1
BTFSC DTMF_TX,2
BSF DTMF_D2
BTFSC DTMF_TX,3
BSF DTMF_D3
NOP
BCF DTMF_RW ;MODO ESCRITURA
BCF DTMF_CS ;ACTIVA IC
BSF DTMF_DS ;CLOCK
NOP
BCF DTMF_DS ;CLOCK
BSF DTMF_CS ;DESACTIVAMOS IC
BSF DTMF_RW ;MODO LECTURA
BANK_1
BSF DTMF_TRIS3 ;CONFIGURA PUERTO COMO ENTRADA
BSF DTMF_TRIS2
BSF DTMF_TRIS1
BSF DTMF_TRIS0
BANK_0
RETURN

; ###########################################################################
; TRASMITE EL EQUIVALENTE DTMF DE UN NUMERO CON DURACION ESTANDAR
MARCA_DTMF
DTMF_DATO_MODE
CALL WRITE_MT8889 ;TX SU EQUIVALENTE EN DTMF
DTMF_COMD_MODE
BSF DTMF_RW ;MODO LECTURA
MARCA_DTMF_A
BCF DTMF_CS ;ACTIVA IC
BSF DTMF_DS ;CLOCK
BTFSC DTMF_D1 ;BUFFER LIBRE PARA SIGUIENTE TX?
GOTO MARCA_DTMF_B ;SI
BCF DTMF_DS ;NO
BSF DTMF_CS ;DESACTIVAMOS IC
GOTO MARCA_DTMF_A ;SEGUIMOS CON LA ESPERA
MARCA_DTMF_B
BCF DTMF_DS ;CLOCK
BSF DTMF_CS ;DESACTIVAMOS IC
BSF DTMF_RW ;MODO LECTURA
RETURN


; ###########################################################################
; INICIO DEL PROGRAMA
; ###########################################################################
INICIO
CALL CONFIGURACION ;CONFIGURAMOS EL PIC
CALL UP_MT8889 ;INICIALIZAMOS EL MT8889
MOVLW 200 ;ESPERAMOS 2 SEGUNDOS O LO QUE SE DESEE
CALL DEMO_VMS
MOVLW 200
CALL DEMO_VMS

LLAMADA
BSF TELF ;DESCOLGAMOS TELEFONO
MOVLW 200 ;ESPERAMOS 2 SEGUNDOS PARA CONEXION
CALL DEMO_VMS ;ESTO PUEDE VARIAR SEGUN EL PROOVEDOR
MOVLW 200
CALL DEMO_VMS

; AQUI HABILITAMOS LA GENERACION DE TONO DTMF (CRA,B0)
DTMF_COMD_MODE
MOVLW B'00000001' ;NO_SELEC CRB, NO_IRQ, DTMF_MODE, TONO
CALL WRITE_MT8889
CALL READ_MT8889 ;LECTURA DEL STATUS PARA BORRAR FLAGS

; REALIZAMOS LA LLAMADA AL NUMERO DESEADO, EN MI CASO LLAMO A MI CELULAR.
; PUEDES AGREGAR O QUITAR NUMEROS, TAMBIEN SE PUEDE HACER UNA RUTINA PARA
; REDUCIR CODIGO... ESO TE LO DEJO COMO TAREA ;)
MOVLW TONO_9
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_7
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_8
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_4
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_8
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_3
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_2
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF
MOVLW TONO_8
CALL MARCA_DTMF ;TX SU EQUIVALENTE EN DTMF

; AQUI HABILITAMOS LA INTERRUPCION DEL MT8889 (NIVEL LOGICO 0) CUANDO SE
; DETECTE UN TONO DTMF.
DTMF_COMD_MODE
MOVLW B'00000100' ;NO_SELEC CRB, IRQ, DTMF_MODE, NO_TONO
CALL WRITE_MT8889
CALL READ_MT8889 ;LECTURA DEL STATUS PARA BORRAR FLAGS

ESPERA
BTFSC DTMF_IRQ ;INTERRUPCION POR RX DE TONO DTMF?
GOTO ESPERA ;NO

DTMF_DATO_MODE ;SI
CALL READ_MT8889 ;LECTURA DE TONO RECIBIDO
MOVLW TONO_AST
XORWF DTMF_RX,W
BTFSS STATUS,Z ;EL DATO RECIBIDO ES *?
GOTO ESPERA ;NO

FIN_LLAMADA
MOVLW 200 ;ESPERAMOS 1 SEGUNDO
CALL DEMO_VMS
BCF TELF ;COLGAMOS TELEFONO

GOTO $ ;LAZO INFINITO

END

Saludos,
Mario.

Lima - Perú

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
Re: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #8 en: 22 de Abril de 2006, 13:08:43 »
Le pido a nuestro moderador Sisco, que por favor le coloque una chincheta a este post para que sea más facil de encontrar  :mrgreen:

Saludos,
Mario.

Lima - Perú

Desconectado Enrique_86

  • PIC12
  • **
  • Mensajes: 62
Re: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #9 en: 27 de Junio de 2008, 01:42:54 »
Muy buen aporte Mario_Pastor, me van a ser de mucha utilidad  :-), voy a utilizar tu codigo a ver que me resulta, luego pongo comentarios. Saludos.  :mrgreen:
...enrique  :-)

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #10 en: 13 de Marzo de 2009, 14:53:01 »
yo estoy realizando la libreria para usar el cm8888 con mikrobasic ya la termine y la estoy probando y ps hasta el momento funciona como deberia, si quieren pueden ver los avances aki

mikrobasic y el CM8888
No cometas el crimen varon si no vas a cumplir la condena

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #11 en: 09 de Abril de 2009, 18:02:15 »
Para k depronto no se confunda cual libreria es cual dejo el codigo de la funcion que contola el cm8888

Código: [Seleccionar]
module CM8888

'*******************************************************************************
'*******************************************************************************
'  LIBRERIA PARA CONTROLAR EL CM8888 CREADA POR MATEO DUQUE - ekud_87@hotmail.com -
'  9 DE ABRIL DEL 2009
'*******************************************************************************
'*******************************************************************************
'Pines de datos
Symbol D3 = 3
Symbol D2 = 2
Symbol D1 = 1
Symbol D0 = 0

Symbol PDATA = PORTC
Symbol PCONF = TRISC

'Pines de control
Symbol CS   = PORTB.4
Symbol RSO  = PORTB.3
Symbol R_D  = PORTB.2
Symbol W_R  = PORTB.1
Symbol IRQ  = PORTB.0

'funciones
Symbol LEER = 0
Symbol ESCRIBIR = 1

'Bancos
Symbol DATOS = 0
Symbol ESTADO = 1
Symbol CONTROL = 1



'*******************************************************************************
'*******************************************************************************
'                    PROCEDIMIENTOS Y FUNCIONES
'*******************************************************************************
'*******************************************************************************

Sub Function CM8888(Dim Funcion as Boolean, Dim Banco as Boolean, Dim Tono as Byte) as Byte

    'Variable Auxiliar
    Dim BUF as byte

    PDATA.D0 = 0
    PDATA.D1 = 0
    PDATA.D2 = 0
    PDATA.D3 = 0

    if FUNCION = LEER then
   
       PCONF.D0 = 1
       PCONF.D1 = 1
       PCONF.D2 = 1
       PCONF.D3 = 1

       'Direcciono hacia los registros status o control
       RSO = Banco

       'Habilito la lectura
       R_D = 0

       'Desabilito la escritura
       W_R = 1

       'Habilito el cm8888
       CS = 0

       BUF = 0

       'Leo los datos
       BUF.0 = PDATA.D0
       BUF.1 = PDATA.D1
       BUF.2 = PDATA.D2
       BUF.3 = PDATA.D3

       'Finalizo el cm8888
       CS = 1

       'Retorno el valor
       CM8888 = BUF

    else
   
        'Configuro el puerto como salida
        PCONF.D0 = 0
        PCONF.D1 = 0
        PCONF.D2 = 0
        PCONF.D3 = 0

        'Selecciono transmicion/recepcion de datos
        RSO = Banco

        'Desabilito la lectura
        R_D = 1
        'Habilito la escritura
        W_R = 0

        'Habilito el cm8888
        CS = 0

        'Escribo el dato
        PDATA.D0 = Tono.0
        PDATA.D1 = Tono.1
        PDATA.D2 = Tono.2
        PDATA.D3 = Tono.3

        '"Finalizo" el cm8888
        CS = 1
       
        CM8888 = 255

    end if

End sub

'Procedimiento para configurar el CM8888 e inicializar el mt8888
Sub Procedure CM8888_INIT()

    Dim aux as byte

    CS = 0
   
    aux = CM8888(LEER,ESTADO,0)
    aux = CM8888(ESCRIBIR,CONTROL,0)
    aux = CM8888(ESCRIBIR,CONTROL,0)
    aux = CM8888(ESCRIBIR,CONTROL,8)
    aux = CM8888(ESCRIBIR,CONTROL,0)
    aux = CM8888(LEER,ESTADO,0)

    CS = 1

end sub


end.

y para usarla seria algo como

CM8888(ESCRIBIR,DATOS,7)

esta linea generaria el tono dtmf 7

un saludo! :mrgreen:
No cometas el crimen varon si no vas a cumplir la condena

Desconectado MarioA

  • PIC10
  • *
  • Mensajes: 9
Re: Guía para el TRANSCEIVER MT8889 y similares
« Respuesta #12 en: 28 de Julio de 2012, 19:20:37 »
Hola amigos, como estan...  saben estoy realizando el mismo proyecto; pero tengo problemas para conseguir ese transformador, diganme es indispensable???