Autor Tema: comunicacion entre un pic16F877 Y UN RTC 1302  (Leído 1521 veces)

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

Desconectado Andres_526

  • PIC10
  • *
  • Mensajes: 5
comunicacion entre un pic16F877 Y UN RTC 1302
« en: 12 de Julio de 2005, 17:36:00 »
HOLA

AGRADEZCO A ALGUIEN QUE HALLA TRABAJADO CON RELOJ DE TIEMPO REAL (RTC) UN 1302, MUCHAS GRACIAS A QUIENES ME PUEDAN COLABORAR

Desconectado fer_zone

  • PIC12
  • **
  • Mensajes: 74
RE: comunicacion entre un pic16F877 Y UN RTC 1302
« Respuesta #1 en: 12 de Julio de 2005, 22:37:00 »
Hola, te dejo unas rutinas que termine hace poco, espero que te sean utiles:
(compiladas para pic 18fxxx, pasarlo a 16f no es dificil, creo que solo difiere la instruccion rrcnf)
;***********************************************************************************************
;********************************* Lectura y escritura del ds1302 ******************************
;***********************************************************************************************
write                  macro   var1,var2
      bsf   PORTE,2
      call   retlcd1
      movlw   var1
      call   sbyte
      movlw   var2
      call   sbyte
      nop
      bcf   PORTE,2     ;Pin de reset: cambia todos los PORTE,2
      endm                          ; por tu pin conectado a reset
write2                   macro   var1,var2
      bsf   PORTE,2
      call   delay100us    ;debes crear una rutina de delay de
      movlw   var1               ;unos 100 microsegundos
      call   sbyte
      movf   var2,W
      call   sbyte
      nop
      bcf   PORTE,2
      endm

;******************************************
config                   clrf   PORTE
      clrf   LATE
      movlw   0x07
      movwf   ADCON1
      movlw   0x00
      movwf   TRISE
      write   0x8e,0x00
      nop
      nop
      nop
      write   0x90,0x00
      nop   
      nop
      nop
      write   0x80,0x00
con1                   return
;*****************************************   
sbyte                   movwf   bufer         ;debes definir este registro:
      movlw       0x08       : bufer     equ    xxxx
      movwf      reg4   ;IDEM
      movlw     0x0
      movwf   TRISE
ecrit                   bcf            PORTE,1   ;I/O pin
      btfsc        bufer,0
      bsf          PORTE,1
      call   delay100us
      bsf            PORTE,0    ;clock pin
      call   delay100us
      bcf   PORTE,0
      rrncf    bufer
      decfsz    reg4
      goto        ecrit
      return

   
rbyte   movlw   0x07
      movwf   reg4
      movlw   0x02
      movwf   TRISE
rb1      bsf   bufer,7
      btfss   PORTE,1
      bcf   bufer,7
      bsf   PORTE,0
      call   delay100us
      bcf   PORTE,0
      rrncf   bufer,F
      call   delay100us
      decfsz   reg4
      bra   rb1
      movf   bufer,W
      return
sburst                   write2   0x80,SEGUNDOS   ;escribe el contenido de los reg.
      write2   0x82,MINUTOS      ;en el rtc
      write2   0x84,HORA
      write2   0x86,DIA
      write2   0x88,MES
      write2   0x8c,YEAR      
      return
rburst   read   0x81
      movwf   SEGUNDOS   ;lee el rtc y vuelca los datos en los reg.
      read   0x83             ;recuerda aqui tambien debes definir
      movwf   MINUTOS      ;estos registros
      read   0x85
      movwf   HORA
      read   0x87
      movwf   DIA
      read   0x89
      movwf   MES
      read   0x8d
      movwf   YEAR
      return