Autor Tema: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????  (Leído 8150 veces)

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

Desconectado Sacahe

  • PIC12
  • **
  • Mensajes: 68
Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« en: 05 de Septiembre de 2006, 13:31:38 »
Hola amigos me ha atacado unas dudas en cuanto a la escritura y lectura de un rtc ds1307 que estoy haciendo con un 16f877a.

En cuanto a la escritura, lo que no entiendo muy bien, porque en la trama que muestra el datasheet del ds1307 (ds1307 modo

receptor)se envia muchos datos consecutivos despues de la direccion que se va a escribir:

S+ slave address + 0 + A + word address + A + data1 + A +

data2 + A + data3....+ A + P

en este caso estos tres datos se estan escribiendo en esa misma word address o que quiere decir?...o el ds1307 tiene

internamente una especie de puntero que va seleccionando las direcciones incrementandose por si solo al detectar que llega

nuevo dato ?

me explico?, bueno veamos un caso: por ejemplo cuando quiero escribir en una localidad de memoria del RTC, por ejemplo en la

00h (segundos), lo que tengo que hacer es:

1.mandar el bit de inicio
2.mandar la dirreccion del ds1307 (1101000) + bit de escritura
3.esperar el ACK del rtc (esclavo)
4.mandar la direccion 00h (segundos, localidad del rtc a escribir)
5.esperar el ACK del rtc (esclavo)
6.mandar el dato a grabar en el registro 00 (segundos).
7.esperar el ACK del rtc (esclavo)

y si despues de esto quiero escribir otro dato en la direccion 01h (minutos), que hago luego?...mi logica me dice que tengo

que poner un bit de STOP en la trama anterior y comenzar una nuevamente trama parecida tambien a la anterior pero atacando a

01h...o simplemente continuo escribiendo el nuevo dato y se guarda por si solo en 01h gracias al puntero que me imagine y ya

comente?

En cuanto a la lectura, no entiendo tampoco algo en cuanto a la trama que se muestra en  el datasheet del ds1307 (ds1307 modo

transmisor):

S+ slave address + 1 + A + data1 + A + data2 + A +

data3....+ Anot + P


La trama no muestra la ubicacion de la direccion del registro del rtc (word address) que deseo leer...como

hago para accesar o leer una X localidad de memoria.

Bueno amigos necesito su mas pronta ayuda ya que apenas comienzo a cacharear con este chip y necesito entregar este proyecto

para mañana  :mrgreen:  GRACIAS  :mrgreen:

Desconectado Sacahe

  • PIC12
  • **
  • Mensajes: 68
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #1 en: 07 de Septiembre de 2006, 12:40:34 »
 :-/ :-/ :-/ :-/ :-/ :-/ Si alguno me ayudara...Se lo agradeceria mucho  :-/ :-/ :-/ :-/ :-/ :-/

Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #2 en: 07 de Septiembre de 2006, 14:59:34 »
Hola Sacahe

En qué lenguaje estás programando?
Yo usé para manejar un 1307 el Protón+ y es algo muy sencillo, tanto para escribirlo, como para leerlo.
Los problemas comienzan al momento de sincronizarlo a la hora actual y al graficar o representar los datos leídos del mismo.
En mi caso tuve que crear caracteres para representarlos en una matriz de leds. (public, scroll text, etc)

Para escribirlo no esperé , ni envié ningún ACK, tampoco para leerlo.

Para escribirlo, el datasheet es muy claro:

Start >>>Slave Address + R/W>>>>Word Address (Puntero) >>>>>Data>>>>Stop

Esto sería :
Enviás Start , que en Protón+ es BSTART.

Luego enviás Slave Address + R/W>>>>Word Address (Puntero) >>>>>Data,

que en Protón+ sería BUSOUT %11010000,0,[%00000000]  .........(segundos)

de igual forma vas incrementando el puntero y escribís los demás datos (minutos, horas, etc.)

                               BUSOUT %11010000,1,[%00000000]    .........(minutos)
                               BUSOUT %11010000,2,[%00000000]     ........(horas)
 
Una vez que terminás de grabar los datos, terminás con el Stop, que en Protón+ es BSTOP

Para leerlo es igual o más fácil, ya que podés elegir qué querés leer, o sea, podés hacer una lectura parcial de sólo algunos datos.

"Acá tenés que definir con anterioridad, en que variables vas a colocar los datos que leas".

Otra vez Start,

y luego otra vez

Slave Address + R/W>>>>Word Address (Puntero) >>>>>Data

que en Protón+ sería BUSIN %11010001,0,[SEG]
                               BUSIN %11010001,1,[MIN]
                               BUSIN %11010001,2,[HORA]
                               BUSIN %11010001,3,[DIAP]  ......(en esa variable te carga el día en palabra :Sunday, Monday ...)
y así hasta completar los siete punteros, o bien sólo leés los que quieras, en el orden que quieras.

Terminás con BSTOP, y listo !  :mrgreen:

Luego de esto usás lo almacenado En las variables como te plazca.

Espero primero que lo entiendas, segundo que te saques una buena nota.

Saludos

Mario

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Sacahe

  • PIC12
  • **
  • Mensajes: 68
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #4 en: 09 de Septiembre de 2006, 13:03:25 »
Mario solo se programar en ASM ..asi que lo del proton paila, pero entiendo muy bien tu explicacion y me ha sido de gran ayuda ya que no me atrevia a continuar por esta dudilla...ahora tengo con que volver a arrancar...Te pongo la rutina de lectura y decirme si esta bien.....Sopongamos que quiero leer la posicion de los segundos (00h), ahora te pregunto si la manera correcta de hacerlo es la siguiente?:

CALL        I2C_INICIO                                ;SE GENERA EL BIT DE INICIO
MOVLW     B'11010001'                               ;DIRECCIONA EL DS1307 EN MODO LECTURA
MOVWF     SSPBUF                                     ;AL CARGARLO EN SSPBUF LO TRANSMITE
CALL         ESPERA_I2C                              ;ESPERA POR INTERRUPCION DEL MODULO
CALL         I2C_ACK                                   ;VERIFICA SI HUBO ACK DEL ESCLAVO
MOVLW     H'00'                                          ;LOCALIDAD DE MEMORIA (DEL DS1307) A LEER: 00h SEGUNDOS         
MOVWF     SSPBUF                                     ;AL CARGARLO EN SSPBUF LO TRANSMITE
CALL         ESPERA_I2C                             ;ESPERA POR INTERRUPCION DEL MODULO
CALL         I2C_ACK                                  ;VERIFICA SI HUBO ACK DEL ESCLAVO
   .
   .
   .
aqui recibo el dato de 00h
guardado en SSPBUF y lo guardo
en cualquier variable

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #5 en: 09 de Septiembre de 2006, 15:22:59 »
TE mando las subrritunas del DS1307 en asm

;Esta es una subbrutina que se encarga de leer y escibir los registros del
;reloj de tiempo real DS1307 de la empresa DALLAS SEMICONDUCTORS
;Se debe conectar SCL - RC3 y SDA -RC4 del pic 16f87x
;se deben definir los siguientes registros
;--------------------------------------------------------------------------------------------------------------
;SEGUNDOS,MINUTOS,HORAS,DIA,DATOD,MES,ANO                        ¡
;UNIDAD_SEG,DECENA_SEG,UNIDAD_MIN,DECENA_MIN                  ¡
;UNIDAD_HO,DECENA_HO,UNIDAD_DD,DECENA_DD                        ¡
;UNIDAD_MES,DECENA_MES,UNIDAD_ANO,DECENA_ANO                  ¡
;DATOI2C,DIRI2C   ,APM                                                   ¡
;#define    I2CCLOCK       D'100000'       ; Baud Rate in bps                     ¡
;#define    FOSC          D'4000000'    ; Frecuencia del cristal               ¡
;--------------------------------------------------------------------------------------------------------------
;Se debe configurar el modulo MSSP despues del inicio del programa      
;Copiar lo siguiente despues de INICIO
;------------------------------------------------------------------------------------------
CONFIG_DS1307;                                          ¡
;CONFIGURO BUD RATE                                    ¡
         BANKSEL   SSPADD;                              ¡
         MOVLW   (((FOSC/I2CCLOCK)/4)-1)   ;               ¡
         MOVWF   SSPADD   ;                           ¡
;CONFIGURO NIVELES DE VOLTAJE PARA I2C                  ¡                           
         MOVLW   B'10000000'   ;                        ¡
         MOVWF   SSPSTAT      ;                        ¡
;PREAMBULO PARA ESCRITURA  I2C                           ¡
;CONFIGURA PUERTO PARA I2C                              ¡
         BANKSEL   SSPCON   ;                           ¡
         MOVLW   B'00101000';                           ¡
         MOVWF   SSPCON;                              ¡
         BANKSEL   TRISC;                                 ¡
         MOVLW   B'00011000';                           ¡
         IORWF   TRISC,F;                              ¡
         BCF      STATUS,RP0;                           ¡                           
         RETLW      0;                                    ¡
;------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------
READDS;                                                                                 ¡
;Envia secuencia de START                                                                  ¡
         BANKSEL   SSPCON2      ;Selecciona banco del SSPCON2                              ¡
         BSF      SSPCON2,SEN   ;Activa el bit SEN para iniciar la secuencia                     ¡
         BTFSC   SSPCON2,SEN   ;                                                         ¡
         GOTO   $-1;                                                                  ¡
;Envia el permiso para escribir la memoria del DS1307                                                ¡            
         movlw   0XD0      ;Carga el dato a enviar                                       ¡
         BANKSEL   SSPBUF      ;Selecciona el banco del SSPBUF                              ¡
         MOVWF   SSPBUF      ;Carga el valor a enviar en el buffer y se inicia el envio de los datos   ¡
         BANKSEL   SSPSTAT      ;Cambia de banco                                          ¡
         BTFSC   SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision         ¡
         GOTO   $-1   ;                                                                  ¡
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para recivir la direccion a leer      ¡
         BANKSEL   SSPCON2      ;                                                   ¡
         BTFSC   SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK                              ¡   
         GOTO   stopI2C      ;1=NO RECONOCIDO REINICIA LA COMUNICACION         ¡
                                    ;0=RECONOCIDO                                       ¡
;Envia direccion del registro del DS1307 que se quiere leer                                          ¡            
         BANKSEL   DIRI2C
         MOVF   DIRI2C,W   ;Carga el dato a enviar                                       ¡
         BANKSEL   SSPBUF         ;Selecciona el banco del SSPBUF                              ¡
         MOVWF   SSPBUF         ;Carga el valor a enviar en el buffer y se inicia el envio de los datos   ¡
         BANKSEL   SSPSTAT         ;Cambia de banco                                          ¡
         BTFSC      SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision         ¡
         GOTO      $-1   ;                                                                  ¡
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar datos                  ¡
         BANKSEL   SSPCON2            ;                                                   ¡
         BTFSC      SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK                              ¡   
         GOTO      stopI2C            ;1=NO RECONOCIDO REINICIA LA COMUNICACION         ¡
                                    ;0=RECONOCIDO                                       ¡                                    
;Envia secuencia de RESTART                                                                  ¡                                                                           
         BANKSEL   SSPCON2         ;Selecciona banco del SSPCON2                              ¡
         BSF      SSPCON2,RSEN   ;Activa el bit RSEN para iniciar la secuencia                     ¡
         BTFSC      SSPCON2,RSEN;                                                         ¡
         GOTO      $-1;                                                                  ¡
;Envia direccion del CI DS1307 y la indicacion que se quiere leer                                       ¡            
         movlw      0XD1            ;Carga el dato a enviar                                       ¡
         BANKSEL   SSPBUF         ;Selecciona el banco del SSPBUF                              ¡
         MOVWF   SSPBUF         ;Carga el valor a enviar en el buffer y se inicia el envio de los datos   ¡
         BANKSEL   SSPSTAT         ;Cambia de banco                                          ¡
         BTFSC      SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision         ¡
         GOTO      $-1;                                                                  ¡
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar los datos (ACK)         ¡
         BANKSEL   SSPCON2;                                                               ¡
         BTFSC      SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK                              ¡
         GOTO      stopI2C            ;1=NO RECONOCIDO REINICIA LA COMUNICACION         ¡
                                    ;0=RECONOCIDO                                       ¡
;Se prepara para recivir los datos                                                               ¡
         BANKSEL   SSPCON2            ;Selecciona banco                                       ¡
         BSF      SSPCON2,RCEN      ;Activa bit RCEN para iniciar la recepcion de datos            ¡
         BTFSC      SSPCON2,RCEN      ;Solo continua si ya se ha recivido todo el byte                  ¡
         GOTO      $-1;                                                                  ¡
;Saca el byte recivido y lo guarda                                                               ¡
         BANKSEL   SSPBUF            ;Saca del buffer el valor leido y lo lleva a la varible            ¡                  
         MOVF      SSPBUF,W            ;de dato leido                                          ¡
         BANKSEL   DATOI2C;                                                               ¡
         MOVWF   DATOI2C;                                                               ¡
;Envia secuencia de NOT ACKNOWLEDGE para terminar la comunicacion                                 ¡
         BANKSEL   SSPCON2         ;                                                      ¡                                                      
         BSF      SSPCON2,ACKDT   ;Selecciona el NACK                                       ¡
         BSF      SSPCON2,ACKEN   ;Envia el NACK                                             ¡
         BTFSC      SSPCON2,ACKEN   ;                                                      ¡
         GOTO      $-1               ;Solo continua hasta que se halla terminado de enviar               ¡
;Envia secuencia de STOP                                                                     ¡
stopI2C;                                                                                 ¡
         BANKSEL   SSPCON2;                                                               ¡                                                         
         BSF      SSPCON2,PEN   ;                                                         ¡
         BTFSC      SSPCON2,PEN;                                                         ¡
         GOTO      $-1;   
         BANKSEL   DATOI2C;                                                               ¡
         RETLW      0


LEER_DS1307
         BANKSEL   DIRI2C
         CLRF      DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   SEGUNDOS
         
         MOVLW   0X01
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   MINUTOS
         
         MOVLW   0X02
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   HORAS
         
         MOVLW   0X03
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   DIA
         
         MOVLW   0X04
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   DATOD
         
         MOVLW   0X05
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   MES
         
         MOVLW   0X06
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   ANO

;Decodifica los datos leidos y los pasa a un registro unico                                             
         BANKSEL   SEGUNDOS
         MOVF      SEGUNDOS,W                                             
         ANDLW   0X0F
         MOVWF   UNIDAD_SEG
         SWAPF   SEGUNDOS,W
         ANDLW   0X0F
         MOVWF   DECENA_SEG

         MOVF      MINUTOS,W
         ANDLW   0X0F
         MOVWF   UNIDAD_MIN
         SWAPF   MINUTOS,W
         ANDLW   0X07
         MOVWF   DECENA_MIN
      
         MOVF      HORAS,W
         ANDLW   0X0F
         MOVWF   UNIDAD_HO
         SWAPF   HORAS,W
         ANDLW   0X01
         MOVWF   DECENA_HO
         BTFSS      HORAS,5
         GOTO      AAM
         MOVLW   "p"
         MOVWF   APM
         GOTO      SIGU
AAM      MOVLW   "a"
         MOVWF   APM            
;--------------------------------------------------
SIGU      MOVLW   0X0F
         ANDWF   DIA,F
;--------------------------------------------------
         MOVF      DATOD,W
         ANDLW   0X0F
         MOVWF   UNIDAD_DD
         SWAPF   DATOD,W
         ANDLW   0X03
         MOVWF   DECENA_DD
;--------------------------------------------------
         MOVF      MES,W
         ANDLW   0X0F
         MOVWF   UNIDAD_MES
         SWAPF   MES,W
         ANDLW   0X01
         MOVWF   DECENA_MES
;--------------------------------------------------
         MOVF      ANO,W
         ANDLW   0X0F
         MOVWF   UNIDAD_ANO
         SWAPF   ANO,W
         ANDLW   0X03
         MOVWF   DECENA_ANO         
         RETLW      0;                                                                     ¡
;-------------------------------------------------------------------------------------------------------------------------------------------------
;
;
;
;-------------------------------------------------------------------------------------------------------------------------------------------------
ESCRIBIR_DS1307
         BANKSEL   SSPCON2
         BSF      SSPCON2,SEN
         BTFSC   SSPCON2,SEN
         GOTO   $-1   
;Envia direccion del CI DS1307 y la indicacion que se quiere escribir               
         movlw   0XD0      ;Carga el dato a enviar
         BANKSEL   SSPBUF         ;Selecciona el banco del SSPBUF
         MOVWF   SSPBUF         ;Carga el valor a enviar en el buffer y se inicia el envio de los datos
         BANKSEL   SSPSTAT         ;Cambia de banco
         BTFSC   SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision
         GOTO   $-1   
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar los datos (ACK)
         BANKSEL   SSPCON2         ;
         BTFSC   SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK
         GOTO   stopI2C2      ;1=NO RECONOCIDO REINICIA LA COMUNICACION
                           ;0=RECONOCIDO                                 
;Envia direccion del registro del DS1307 que quiere escribir                  
         BANKSEL   DIRI2C
         MOVF   DIRI2C,W
         BANKSEL   SSPBUF
         MOVWF   SSPBUF
         BANKSEL   SSPSTAT
         BTFSC   SSPSTAT,R_W
         GOTO   $-1   
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar los datos (ACK)
         BANKSEL   SSPCON2            ;
         BTFSC      SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK
         GOTO      stopI2C2            ;1=NO RECONOCIDO REINICIA LA COMUNICACION
                                    ;0=RECONOCIDO
;Envio dato                
         BANKSEL   DATOI2C
         MOVF      DATOI2C,W
         BANKSEL   SSPBUF
         MOVWF   SSPBUF
         BANKSEL   SSPSTAT
         BTFSC      SSPSTAT,R_W
         GOTO      $-1   
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar los datos (ACK)
         BANKSEL   SSPCON2            ;
         BTFSC      SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK
         GOTO      stopI2C2            ;1=NO RECONOCIDO REINICIA LA COMUNICACION
                                    ;0=RECONOCIDO         
;Inicia secuencia de STOP-------------------------
stopI2C2   
         BANKSEL   PIE1   
         BCF      PIE1,SSPIE         
         BSF      SSPCON2,PEN
         BTFSC      SSPCON2,PEN
         GOTO      $-1   
         BCF      STATUS,RP0
         CALL      RETARDO
         RETLW      0

INI_DS1307
         MOVF      SEGUNDOS,W
         MOVWF   DATOI2C
         CLRF      DIRI2C            ;CARGO SEGUNDOS 00
         CALL      ESCRIBIR_DS1307
         
         MOVF      MINUTOS,W
         MOVWF   DATOI2C
         INCF      DIRI2C,F
         CALL      ESCRIBIR_DS1307
         
         MOVF      HORAS,W
         MOVWF   DATOI2C
         INCF      DIRI2C,F
         CALL      ESCRIBIR_DS1307
         
;         INCF      DIRI2C,F
;         MOVLW   0X01               ;CARGO DIA lunes
;         MOVWF   DATOI2C
;         CALL      ESCRIBIR_DS1307
         
;         INCF      DIRI2C,F
;         MOVLW   0X02               ;CARGO DATO DEL DIA 02
;         MOVWF   DATOI2C
;         CALL      ESCRIBIR_DS1307
         
;         INCF      DIRI2C,F
;         MOVLW   0X02               ;CARGO MES FEBRERO
;         MOVWF   DATOI2C
;         CALL      ESCRIBIR_DS1307
         
;         INCF      DIRI2C,F
;         MOVLW   0X05               ;CARGO AÑO 2005
;         MOVWF   DATOI2C
;         CALL      ESCRIBIR_DS1307
         
         MOVLW   0X07
         MOVWF   DIRI2C
         MOVLW   0X10               ;ENCIENDO EL OSCILADOR A 1Hz
         MOVWF   DATOI2C
         CALL   ESCRIBIR_DS1307
         
         RETLW      0



Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #6 en: 09 de Septiembre de 2006, 15:55:53 »
Hola Sacahe

......Mario solo se programar en ASM ..asi que lo del proton paila, pero entiendo muy bien tu explicacion   ......

Por lo que te digo Amigo Sacahe ..... solo sé programar en Protón+ , así que lo del ASM paila .......  :D

Pero de todas formas... , primero el enlace que te ha dejado el amigo Diego, que está formidable y segundo PICmouse te ha dejado (creo yo), el problema resuelto y servido en bandeja.

Lo que no puedo dejar de mencionar es mi admiración por Uds. y por todos los que manejan ASM.
Yo creo que ya estoy un poco grande para eso y mi pobre neurona, no alcanzaría para eso.  :D

No me quejo de lo que hago ya que yo hago

         BUSIN %11010001,0,[SEG]
 
Y pongo en la variable SEG los segundos leídos desde el 1307, siendo que Uds. tienen que hacer

         BANKSEL   DIRI2C
         CLRF      DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   SEGUNDOS

Para mandarle Stop

         BSTOP

contra
       
         BANKSEL   PIE1   
         BCF      PIE1,SSPIE         
         BSF      SSPCON2,PEN
         BTFSC      SSPCON2,PEN
         GOTO      $-1   
         BCF      STATUS,RP0
         CALL      RETARDO
         RETLW      0


Pero la ventaja la llevan Uds., dominando el PIC, ciclo a ciclo de reloj.
Mis felicitaciones y respetos por el conocimiento.

Espero te sirva lo que han posteado los amigos, Sacahe.
Estás en muy buenas manos.

Saludos.
Mario


Desconectado Sacahe

  • PIC12
  • **
  • Mensajes: 68
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #7 en: 10 de Septiembre de 2006, 12:57:33 »
Mil gracias a todos...yo sabia que no me habia equivocado de foro por los excelentes colaboradores que no titubean al dar en ayuda sus conocimientos...

                                                                                     :mrgreen: :mrgreen:  GRACIAS  :mrgreen: :mrgreen:

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #8 en: 19 de Enero de 2007, 17:24:13 »
pic mause buena por esa amigo las rutinas en asm del ds1307.

boy a intentar organizar este detalle suyo.

gracias por las rutinas
saludos y gracias

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #9 en: 19 de Enero de 2007, 21:17:47 »
De nada microcom, Cualquier pregunta, no dudes.

Saludos!

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #10 en: 22 de Enero de 2007, 14:25:01 »
picmause y amigos del foro disculpas por el viajao de letras que escribi.

me he puesto ha estudiar tu aporte y  es mucha la informacion de apoyo y estuve organizando el programa.

solo me quedan dudas que no se si son tan presisas.

el ds1307 se estan actualizando los datos constantemente, es necesario mandar a leer los meses tambien junto can las horas,seg,min ;

¿al quitarle la alimentacion (VCC) al pic estando el ds1307 con vcc  este sigue contando pero como el micro se ha resetado entonces empesara desde cero y mandará los datos iniciales al ds1307.
esto se puede solucionar, leyendo los minutos antes de iniciar el ds1307 y haci no escribir sino leer el ds1307.?

para el momento de acomodar la min,hor,seg,hor,año se deben tener mas o menos dos pulsadores que segun he leido tienen que manejarse con interrupciones para no parar eel programa preguntando por entardas.

cual esquematico (circuito)  me recomendarias.

saludos y gracias por la colaboracion.



Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #11 en: 22 de Enero de 2007, 16:35:22 »
Bueno paisano, respecto al esquematico, seria este:

Solo es colocar SDA/I2c y SCL/I2c en los pines correspondientes del PIC.

Pero teoria, creo que RedPic, lo ha explicado de la mejor forma posible. Te recomiendo una pasadita por este hilo.

http://www.todopic.com.ar/foros/index.php?topic=13282.0

Saludos!






Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #12 en: 22 de Enero de 2007, 18:55:44 »
Muchas gracias por tu cita, PICMouse, te debo una  :mrgreen: :mrgreen: :mrgreen:

microcom, date un vuelta por el hilo que te ha puesto el amigo PICMouse y si tienes alguna duda dímelo.  :)
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #13 en: 25 de Enero de 2007, 14:39:58 »
pic mause usted que maneja el esambler y ademas ya estuve probando el programa que adapte y no me esta funcionando en proteus al meno me debe estar mostrando un pequeña rutina para provar.
para ver si me hace el favor de mirar este.

ADJUNTO EL CIRCUITO EN PROTEUS

LIST    P=16F877A
#INCLUDE<P16F877A.INC>
         ;DECRARACION DE VARIABLES
TRISC   EQU   87
TRISB   EQU   86
TRISA   EQU   85
TIMER0   EQU   01   
PCL     EQU     02
STATUS   EQU   03
PORTA   EQU   05
PORTB   EQU   06
PORTC   EQU     07
PORTD   EQU     08
PORTE   EQU     09
ADCON0  EQU     1F
TMRO_OPT   EQU   81


SSPADD   EQU       93
SSPSTAT   EQU   94
SSPCON    EQU   14
SSPCON2 EQU     91
SSPBUF    EQU     13
PIE1   EQU   8C

         ;REGISTROS DS1307
UNIDAD_SEG  EQU  20
DECENA_SEG EQU  21
UNIDAD_MIN   EQU 22
DECENA_MIN EQU 23
UNIDAD_HO       EQU 24
DECENA_HO      EQU   25
UNIDAD_DIA   EQU   26
DECENAS_DIA   EQU     27
UNIDAD_AÑO   EQU   28
DECENA_AÑO   EQU     29
DATOI2C   EQU      2A
DIRI2C    EQU         2B
APM     EQU         2C
PDel0    EQU         2D
PDel1   EQU         2E
SEGUNDOS   EQU      2F
MINUTOS    EQU      30
HORAS      EQU      31
DIA         EQU      32
MES         EQU      33
AÑO         EQU      34
DATOD      EQU      35
UNIDAD_DD   EQU      36
DECENA_DD   EQU      37
UNIDAD_MES   EQU      38
DECENA_MES   EQU      39

;DATOI2C,DIRI2C   ,APM
#define    I2CCLOCK       D'100000'       ; Baud Rate in bps                     ¡
#define    FOSC          D'4000000'    ; Frecuencia del cristal


            ;BITS  DE I2C 
R_W      EQU      2
SEN      EQU      0
ACKSTAT   EQU      6
RSEN   EQU      1
RCEN   EQU      3
ACKDT   EQU      5
ACKEN   EQU      4
PEN    EQU      2
SSPIE   EQU      3
RS   EQU      0
E   EQU      1
INTF   EQU   1

      ORG  00
         GOTO    INICIO
   ORG   04
   GOTO   SERVICIOINTERUPCION



SERVICIOINTERUPCION

   BANKSEL   INTCON
   BTFSS   INTCON,INTF
   GOTO   FIN_INTERRPCION
   CALL   DS1307_LEER
FIN_INTERRPCION
   BCF   INTCON,RBIF
   BCF   INTCON,INTF
   BCF   STATUS,5
   RETFIE

   
;RELOJ   BANKSEL   FLAGSAJUSTE   
;MOVF   FLAGSAJUSTE,F
;      BTFSC   STATUS,Z
;      GOTO   DS1307_LEER
;      BANKSEL   OPTION_REG
;      MOVLW   B'01000000'
;      XORWF   OPTION_REG,1
;      BCF      STATUS,5
;      COMF   INTERMITENCIA,1
;      GOTO   ACTUALIZA_RELOJ
      
   
      
DS1307_LEER
      CALL   LEER_DS1307
ACTUALIZA_RELOJ
      CALL   VISUALIZACION_RELOJ
      RETLW 00
   




      
RETARDO   
; Code generated by PDEL  ver 1.0  on 24/01/2007 at 10:33:51 p.m.
; Description: Waits 20000 cycles
;-------------------------------------------------------------
PDelay  movlw     .21       ; 1 set number of repetitions (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .237      ; 1 set number of repetitions (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        decfsz    PDel1, 1  ; 1 + (1) is the time over? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) is the time over? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 cycles delay
PDelL2  clrwdt              ; 1 cycle delay
        return              ; 2+2 Done
TABLA   ADDWF   PCL,1      ;TABLA DE DATOS A MOSTRAR EN LCD.
   RETLW   "0"
   RETLW   "1"
   RETLW   "2"
   RETLW   "3"
   RETLW   "4"
   RETLW   "5"
   RETLW   "6"
   RETLW   "7"
   RETLW   "8"
   RETLW   "9"
;TABLA   ADDWF   PCL,1
DT "0123456789",0X00
DATOS   
   BSF   PORTA,RS
   BSF   PORTA,E
   MOVWF   PORTD
   CALL   RETARDO
   BCF   PORTA,E
   RETURN
INSTRUC   
   BCF   PORTA,RS        ;COLOCA EN CERO RAO
   BSF   PORTA,E
   MOVWF   PORTD   
   CALL   RETARDO
   BCF   PORTA,E
   RETURN



   INICIO
   MOVLW   00
   MOVWF STATUS
   BSF   STATUS,5
   BCF   STATUS,6
   MOVLW   07
        MOVWF   ADCON0   
   MOVLW   B'00011000'
   MOVWF   PORTC
   MOVLW   B'00000001'
   MOVWF     PORTB
   CLRF   PORTA
   CLRF   PORTD
   BCF   STATUS,5
LCDINI   MOVLW   B'00111000'     ;INTERFACE DE 8BITS 2 LINEAS
   CALL   INSTRUC
   MOVLW   B'00000110'     ;DIRECCION A LA DERECHA
   CALL   INSTRUC
   MOVLW   B'00001101'     ;PRENDE PANTALLA
   CALL   INSTRUC
   MOVLW   B'00000001'     ;LIMPIA PANTALLA
   CALL   INSTRUC



   CALL   CONFIG_DS1307;
   CALL   INI_DS1307
   BANKSEL   INTCON
   MOVLW   B'10010000'
   MOVWF   INTCON

PRINC
SLEEP
   GOTO   PRINC

;FUNCION_BATERIA
;   BANKSEL   INTCON
;   MOVLW   B'10010000'
;   MOVWF   INTCON






CONFIG_DS1307;                                          ¡
;CONFIGURO BUD RATE                                    ¡
         BANKSEL   SSPADD;                              ¡
         MOVLW   (((FOSC/I2CCLOCK)/4)-1)   ;               ¡
         MOVWF   SSPADD   ;                           ¡
;CONFIGURO NIVELES DE VOLTAJE PARA I2C                  ¡                           
         MOVLW   B'10000000'   ;                        ¡
         MOVWF   SSPSTAT      ;                        ¡
;PREAMBULO PARA ESCRITURA  I2C                           ¡
;CONFIGURA PUERTO PARA I2C                              ¡
         BANKSEL   SSPCON   ;                           ¡
         MOVLW   B'00101000';                           ¡
         MOVWF   SSPCON;                              ¡
         BANKSEL   TRISC;                                 ¡
         MOVLW   B'00011000';                           ¡
         IORWF   TRISC,F;                              ¡
         BCF      STATUS,5;                           ¡                           
         RETLW      0;                                    ¡
;------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------
READDS;                                                                                 ¡
;Envia secuencia de START                                                                  ¡
         BANKSEL   SSPCON2      ;Selecciona banco del SSPCON2                              ¡
         BSF      SSPCON2,SEN   ;Activa el bit SEN para iniciar la secuencia                     ¡
         BTFSC   SSPCON2,SEN   ;                                                         ¡
         GOTO   $-1;                                                                  ¡
;Envia el permiso para escribir la memoria del DS1307                                                ¡           
         movlw   0XD0      ;Carga el dato a enviar                                       ¡
         BANKSEL   SSPBUF      ;Selecciona el banco del SSPBUF                              ¡
         MOVWF   SSPBUF      ;Carga el valor a enviar en el buffer y se inicia el envio de los datos   ¡
         BANKSEL   SSPSTAT      ;Cambia de banco                                          ¡
         BTFSC   SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision         ¡
         GOTO   $-1   ;                                                                  ¡
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para recivir la direccion a leer      ¡
         BANKSEL   SSPCON2      ;                                                   ¡
         BTFSC   SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK                              ¡   
         GOTO   stopI2C      ;1=NO RECONOCIDO REINICIA LA COMUNICACION         ¡
                                    ;0=RECONOCIDO                                       ¡
;Envia direccion del registro del DS1307 que se quiere leer                                          ¡           
         BANKSEL   DIRI2C
         MOVF   DIRI2C,W   ;Carga el dato a enviar                                       ¡
         BANKSEL   SSPBUF         ;Selecciona el banco del SSPBUF                              ¡
         MOVWF   SSPBUF         ;Carga el valor a enviar en el buffer y se inicia el envio de los datos   ¡
         BANKSEL   SSPSTAT         ;Cambia de banco                                          ¡
         BTFSC      SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision         ¡
         GOTO      $-1   ;                                                                  ¡
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar datos                  ¡
         BANKSEL   SSPCON2            ;                                                   ¡
         BTFSC      SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK                              ¡   
         GOTO      stopI2C            ;1=NO RECONOCIDO REINICIA LA COMUNICACION         ¡
                                    ;0=RECONOCIDO                                       ¡                                   
;Envia secuencia de RESTART                                                                  ¡                                                                           
         BANKSEL   SSPCON2         ;Selecciona banco del SSPCON2                              ¡
         BSF      SSPCON2,RSEN   ;Activa el bit RSEN para iniciar la secuencia                     ¡
         BTFSC      SSPCON2,RSEN;                                                         ¡
         GOTO      $-1;                                                                  ¡
;Envia direccion del CI DS1307 y la indicacion que se quiere leer                                       ¡           
         movlw      0XD1            ;Carga el dato a enviar                                       ¡
         BANKSEL   SSPBUF         ;Selecciona el banco del SSPBUF                              ¡
         MOVWF   SSPBUF         ;Carga el valor a enviar en el buffer y se inicia el envio de los datos   ¡
         BANKSEL   SSPSTAT         ;Cambia de banco                                          ¡
         BTFSC      SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision         ¡
         GOTO      $-1;                                                                  ¡
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar los datos (ACK)         ¡
         BANKSEL   SSPCON2;                                                               ¡
         BTFSC      SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK                              ¡
         GOTO      stopI2C            ;1=NO RECONOCIDO REINICIA LA COMUNICACION         ¡
                                    ;0=RECONOCIDO                                       ¡
;Se prepara para recivir los datos                                                               ¡
         BANKSEL   SSPCON2            ;Selecciona banco                                       ¡
         BSF      SSPCON2,RCEN      ;Activa bit RCEN para iniciar la recepcion de datos            ¡
         BTFSC      SSPCON2,RCEN      ;Solo continua si ya se ha recivido todo el byte                  ¡
         GOTO      $-1;                                                                  ¡
;Saca el byte recivido y lo guarda                                                               ¡
         BANKSEL   SSPBUF            ;Saca del buffer el valor leido y lo lleva a la varible            ¡                 
         MOVF      SSPBUF,W            ;de dato leido                                          ¡
         BANKSEL   DATOI2C;                                                               ¡
         MOVWF   DATOI2C;                                                               ¡
;Envia secuencia de NOT ACKNOWLEDGE para terminar la comunicacion                                 ¡
         BANKSEL   SSPCON2         ;                                                      ¡                                                     
         BSF      SSPCON2,ACKDT   ;Selecciona el NACK                                       ¡
         BSF      SSPCON2,ACKEN   ;Envia el NACK                                             ¡
         BTFSC      SSPCON2,ACKEN   ;                                                      ¡
         GOTO      $-1               ;Solo continua hasta que se halla terminado de enviar               ¡
;Envia secuencia de STOP                                                                     ¡
stopI2C;                                                                                 ¡
         BANKSEL   SSPCON2;                                                               ¡                                                         
         BSF      SSPCON2,PEN   ;                                                         ¡
         BTFSC      SSPCON2,PEN;                                                         ¡
        GOTO      $-1;   
         BANKSEL   DATOI2C;                                                               ¡
         RETLW      0


LEER_DS1307
         BANKSEL   DIRI2C
         CLRF      DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   SEGUNDOS
         
         MOVLW   0X01
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   MINUTOS
         
         MOVLW   0X02
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   HORAS
         
         MOVLW   0X03
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   DIA
         
         MOVLW   0X04
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   DATOD
         
         MOVLW   0X05
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   MES
         
         MOVLW   0X06
         MOVWF   DIRI2C
         CALL      READDS
         MOVF      DATOI2C,W
         MOVWF   AÑO

;Decodifica los datos leidos y los pasa a un registro unico                                             
         BANKSEL   SEGUNDOS
         MOVF      SEGUNDOS,W                                             
         ANDLW   0X0F
         MOVWF   UNIDAD_SEG
         SWAPF   SEGUNDOS,W
         ANDLW   0X0F
         MOVWF   DECENA_SEG

         MOVF      MINUTOS,W
         ANDLW   0X0F
         MOVWF   UNIDAD_MIN
         SWAPF   MINUTOS,W
         ANDLW   0X07
         MOVWF   DECENA_MIN
     
         MOVF      HORAS,W
         ANDLW   0X0F
         MOVWF   UNIDAD_HO
         SWAPF   HORAS,W
         ANDLW   0X01
         MOVWF   DECENA_HO
         BTFSS      HORAS,5
         GOTO      AAM
         MOVLW   "p"
         MOVWF   APM
         GOTO      SIGU
AAM      MOVLW   "a"
         MOVWF   APM           
;--------------------------------------------------
SIGU      MOVLW   0X0F
         ANDWF   DIA,F          ;LUNES,MARTES....1 A 7
;--------------------------------------------------
         MOVF      DATOD,W
         ANDLW   0X0F
         MOVWF   UNIDAD_DD
         SWAPF   DATOD,W
         ANDLW   0X03
         MOVWF   DECENA_DD
;--------------------------------------------------
         MOVF      MES,W
         ANDLW   0X0F
         MOVWF   UNIDAD_MES
         SWAPF   MES,W
         ANDLW   0X01
         MOVWF   DECENA_MES
;--------------------------------------------------
         MOVF      AÑO,W
         ANDLW   0X0F
         MOVWF   UNIDAD_AÑO
         SWAPF   AÑO,W
         ANDLW   0X03
         MOVWF   DECENA_AÑO         
         RETLW      0;                                                                     ¡
;-------------------------------------------------------------------------------------------------------------------------------------------------
;
;
;
;-------------------------------------------------------------------------------------------------------------------------------------------------
ESCRIBIR_DS1307
         BANKSEL   SSPCON2
         BSF      SSPCON2,SEN
         BTFSC   SSPCON2,SEN
         GOTO   $-1   
;Envia direccion del CI DS1307 y la indicacion que se quiere escribir               
         movlw   0XD0      ;Carga el dato a enviar
         BANKSEL   SSPBUF         ;Selecciona el banco del SSPBUF
         MOVWF   SSPBUF         ;Carga el valor a enviar en el buffer y se inicia el envio de los datos
         BANKSEL   SSPSTAT         ;Cambia de banco
         BTFSC   SSPSTAT,R_W   ;Continua con el programa solo si es completada la transmision
         GOTO   $-1   
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar los datos (ACK)
         BANKSEL   SSPCON2         ;
         BTFSC   SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK
         GOTO   stopI2C2      ;1=NO RECONOCIDO REINICIA LA COMUNICACION
                           ;0=RECONOCIDO                                 
;Envia direccion del registro del DS1307 que quiere escribir                 
         BANKSEL   DIRI2C
         MOVF   DIRI2C,W
         BANKSEL   SSPBUF
         MOVWF   SSPBUF
         BANKSEL   SSPSTAT
         BTFSC   SSPSTAT,R_W
         GOTO   $-1   
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar los datos (ACK)
         BANKSEL   SSPCON2            ;
         BTFSC      SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK
         GOTO      stopI2C2            ;1=NO RECONOCIDO REINICIA LA COMUNICACION
                                    ;0=RECONOCIDO
;Envio dato               
         BANKSEL   DATOI2C
         MOVF      DATOI2C,W
         BANKSEL   SSPBUF
         MOVWF   SSPBUF
         BANKSEL   SSPSTAT
         BTFSC      SSPSTAT,R_W
         GOTO      $-1   
;Espera respuesta del DS1307 que indica que ha recivido el dato y esta listo para enviar los datos (ACK)
         BANKSEL   SSPCON2            ;
         BTFSC      SSPCON2,ACKSTAT   ;Solo continua si llaga el ACK
         GOTO      stopI2C2            ;1=NO RECONOCIDO REINICIA LA COMUNICACION
                                    ;0=RECONOCIDO         
;Inicia secuencia de STOP-------------------------
stopI2C2   
         BANKSEL   PIE1   
         BCF      PIE1,SSPIE         
         BSF      SSPCON2,PEN
         BTFSC      SSPCON2,PEN
         GOTO      $-1   
         BCF      STATUS,5
         CALL      RETARDO
         RETLW      0

INI_DS1307
         MOVF      SEGUNDOS,W
         MOVWF   DATOI2C
         CLRF      DIRI2C            ;CARGO SEGUNDOS 00
         CALL      ESCRIBIR_DS1307
         
         MOVF      MINUTOS,W
         MOVWF   DATOI2C
         INCF      DIRI2C,F
         CALL      ESCRIBIR_DS1307
         
         MOVF      HORAS,W
         MOVWF   DATOI2C
         INCF      DIRI2C,F
         CALL      ESCRIBIR_DS1307
         
        INCF      DIRI2C,F
         MOVLW   0X01               ;CARGO DIA lunes
         MOVWF   DATOI2C
         CALL      ESCRIBIR_DS1307
         
         INCF      DIRI2C,F
         MOVLW   0X02               ;CARGO DATO DEL DIA 02
         MOVWF   DATOI2C
         CALL      ESCRIBIR_DS1307
         
         INCF      DIRI2C,F
         MOVLW   0X08               ;CARGO MES FEBRERO
         MOVWF   DATOI2C
         CALL      ESCRIBIR_DS1307
         
         INCF      DIRI2C,F
         MOVLW   0X05               ;CARGO AÑO 2005
         MOVWF   DATOI2C
         CALL      ESCRIBIR_DS1307
         
         MOVLW   0X07
         MOVWF   DIRI2C
         MOVLW   0X10               ;ENCIENDO EL OSCILADOR A 1Hz
         MOVWF   DATOI2C
         CALL   ESCRIBIR_DS1307
         RETLW      0


VISUALIZACION_RELOJ
   

      BCF  STATUS,5
      MOVLW   B'10000010
      CALL   INSTRUC
      MOVF   DECENA_DD,0
      CALL   TABLA
      CALL   DATOS
      MOVF   UNIDAD_DD,0
      CALL   TABLA
      CALL   DATOS
      MOVLW   B'10000110
      CALL   INSTRUC
      MOVF   DECENA_MES,0
      CALL   TABLA
      CALL   DATOS
      MOVF   UNIDAD_MES,0
      CALL   TABLA
      CALL   DATOS
      MOVLW   B'10001101'
      CALL   INSTRUC
      MOVF   UNIDAD_AÑO,0
      CALL   TABLA
      CALL   DATOS
      MOVF   DECENA_AÑO,0
      CALL   TABLA
      CALL   DATOS
   RETURN

      RETURN      
      
                                                      
      END

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Dudas con tramas i2c de Recepcion y Transmision de un DS1307 ?????
« Respuesta #14 en: 25 de Enero de 2007, 16:48:09 »
Listo, apenas tenga algo, comento!


 

anything