Programación Específica > Microcontroladores

 Ayuda Reloj 16f877

<< < (3/3)

kilopondio:
Todo muy lindo Daniel...pero en donde metiste la direccion del dispositivo que en el caso del DS1307 es 0xD1 y 0XD0????.

¿Cómo sabes cuando es lectura o escritura sin estos códigos?.

Bye!.


Kilo

maxi:
Hola a todos:
                   Mi nombre es Maximiliano Olivera estoy trabajando en un proyecto y estoy utilizando un Real Time Clock, el DS1337, mi problema es que no lo puedo hacer funcionar por interrupciones, es decir puedo leer los registros del integrado pero hacieno sucesivas lecturas. Lo que yo necesito es que el RTC interrumpa al PIC cada 1 minuto para que este lea los registros del reloj y actualize los registros en el PIC. Si alguien tiene alguan idea para ayudarme estare agradecido. Mi direccion de correo es mjolivera@yahoo.com      
Saludos.

                                                  Maximiliano Olivera

pichone:

--- Cita de: "piolex" --- y alguien sabe como conectar el pic16f877 con uun ds1302?
programacion assembler
--- Fin de la cita ---
Estmados amigos estoy teniendo problemas para conectar el reloj ds1307 con el PIC f877... si bien estudié el asm del pic f84 no pude.. supongo hay alguna diferencia. Si alguno de Ustedestiene algún dato de interés me será de utilidad como así algún asm de referencia.
Muchas Gracias

kenshinkof:
;DS1302    CONEXIONES SON RB1 A IO  RB2  A RST  RB3 A SCLK
                 list      p=16F876
   radix      hex
   INCLUDE     <P16F876.INC>
   __config H'3F79'
   IO         EQU 1; Son los pines del puerto donde están conectadas las terminales de comunicación
   RST        EQU 2; Estas pueden variar según el circuito y la disposición de pines
   SCLK       EQU 3;
    ROTA       EQU 23;
    ALFA       EQU 24;
    UNDATO     EQU 25; Localidad de memoria donde se almacenará temporalmente el dato recibido del DS1302
   SEGUN      EQU 26; Localidad que almacena los segundos, leídos del DS1302
   MIN        EQU 27; Localidad que almacena los minutos, leídos del DS1302
   HOR        EQU 28; Localidad que almacena las horas, leídos del DS1302
    DELAY      EQU 29;
       
    ORG  0

   BSF   STATUS,RP0   
   MOVLW D'207'
   MOVWF SPBRG
   CLRF  TXSTA
    CLRF  TRISB
   BCF   STATUS,RP0
   
   MOVLW  0XA0
   MOVWF  RCSTA
    CLRF   PORTB

   ;Deshabilita el Write Protect
ESCRITURA
      MOVLW       0X8E ;Comando que apunta al registro de control para una escritura
      CALL       COMRTC ;Llama a la rutina que envía el comando hacia el DS1302
      MOVLW       0X00 ;Este dato deshabilita el Write Protect para permitir futuras escrituras
      CALL        ENVIARTC1;Llama a la rutina que envía el dato hacia el DS1302
;***************************************************
;ESCRIBE el numero 0x35 a al registro correspondiente de los segundos del DS1302
      MOVLW       0X80 ; POSICIONA LA LOCALIDAD DE LOS SEGUNDOS PARA ESCRITURA
      CALL       COMRTC; Llama la rutina que envía el comando
      MOVLW       0X35 ;ENVIA EL DATO 0X35 A LOS SEGUNDOS
      CALL        ENVIARTC1; Llama a la rutina que envía el dato hacia el DS1302
;****************************************************
;ESCRIBE el numero 0x22 a al registro correspondiente de los minutos del DS1302
      MOVLW    0X82 ; POSICIONA LA LOCALIDAD DE LOS MINUTOS PARA ESCRITURA
      CALL    COMRTC; Llama la rutina que envía el comando
      MOVLW    0X22 ;ENVIA EL DATO 0X22 A LOS MINUTOS
      CALL    ENVIARTC1; Llama a la rutina que envía el dato hacia el DS1302
;****************************************************
;ESCRIBE el numero 0x13 al registro correspondiente de las horas del DS1302
      MOVLW    0X84 ; POSICIONA LA LOCALIDAD DE LAS HORAS PARA ESCRITURA
      CALL    COMRTC; Llama la rutina que envía el comando
      MOVLW    0X13 ;ENVIA EL DATO 0X13 A LAS HORAS
      CALL    ENVIARTC1; Llama a la rutina que envía el dato hacia el DS1302
      BCF       PORTB,RST ;Deshabilita las comunicaciones
       
;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
LECTURA
;OPERACIONES DE LECTURA
;***************************************************
;Lee el registro correspondiente de los segundos del DS1302
      MOVLW    0X81 ; POSICIONA LA LOCALIDAD DE LOS SEGUNDOS PARA LECTURA
      CALL    COMRTC; Llama la rutina que envía el comando
      CALL    RECIBRTC1; Llama a la rutina que recibe el dato enviado desde el DS1302
      MOVF    UNDATO,W; Mueve el dato recibido a W
      MOVWF    SEGUN ; Guarda el dato en la variable SEGUN
;***************************************************   

;Lee el registro correspondiente de los minutos del DS1302
      MOVLW    0X83 ; POSICIONA LA LOCALIDAD DE LOS MINUTOS PARA LECTURA
      CALL    COMRTC; Llama la rutina que envía el comando
      CALL    RECIBRTC1; Llama a la rutina que recibe el dato enviado desde el DS1302
      MOVF    UNDATO,W; Mueve el dato recibido a W
      MOVWF    MIN ; Guarda el dato en la variable MIN
;***************************************************
      ;Lee el registro correspondiente de las horas del DS1302
      MOVLW    0X85 ; POSICIONA LA LOCALIDAD DE LAS HORAS PARA LECTURA
      CALL    COMRTC; Llama la rutina que envía el comando
      CALL    RECIBRTC1; Llama a la rutina que recibe el dato enviado desde el DS1302
      MOVF    UNDATO,W; Mueve el dato recibido a W
      MOVWF    HOR ; Guarda el dato en la variable HOR
       
        BSF    STATUS,RP0
        BSF    TXSTA,TXEN
        BCF    STATUS,RP0

        MOVF   SEGUN,W
        MOVWF  TXREG
        CALL   Retardo_1
       GOTO   LECTURA
     
   
       


;DE ESTA MANERA ES COMO SE ESCRIBEN Y SE LEEN LOS REGISTROS DEL DS1302. USTED PUEDE MANIPULAR
;LOS DATOS RECIBIDOS, QUE SE HAN GUARDADO EN LA RAM, PARA MOSTRARLOS EN UN DISPLAY
FIN       GOTO FIN
COMRTC   MOVWF ALFA
      BSF STATUS,RP0
      BCF TRISB,IO ;CONFIGURA EL PUERTO COMO SALIDA
      BCF STATUS,RP0
      BSF PORTB,RST ;HABILITA LA COMUNICACIÓN
      MOVLW 0X08
      MOVWF ROTA ;ESTE ES UN CONTADOR
COMRTC1 BSF PORTB,IO ;PONE A 0 O A 1 EL PIN IO DEL PUERTO
      BTFSS ALFA,0 ;DEPENDIENDO EL VALOR DEL BIT 0 DEL DATO A ENVIAR
      BCF PORTB,IO
      BSF PORTB,SCLK; FLANCO DE SUBIDA DE SCLK
        CALL RETARDO
      BCF PORTB,SCLK; FLANCO DE BAJADA DE SCLK
      DECFSZ ROTA,F ;
      GOTO FALTAN
      RETURN
FALTAN  RRF ALFA,F ;ROTA EL DATO A ENVIAR
        GOTO COMRTC1
;*************************************************
;RUTINA QUE ENVIA UN DATO AL DS1302 DESPUES DEL COMANDO
ENVIARTC1
         MOVWF ALFA
         MOVLW 0X08
         MOVWF ROTA
         BSF STATUS,RP0
         BCF TRISB,IO
         BCF STATUS,RP0
OTRO2       BSF PORTB,IO;PONE A 0 O A 1 EL PIN IO DEL PUERTO
         BTFSS ALFA,0 ;DEPENDIENDO EL VALOR DEL BIT 0 DEL DATO A ENVIAR
         BCF PORTB,IO;
            BSF PORTB,SCLK; FLANCO DE SUBIDA DE SCLK
            CALL RETARDO
         BCF PORTB,SCLK; FLANCO DE BAJADA DE SCLK
         DECFSZ ROTA,F
         GOTO FALTAN12
         BCF PORTB,RST
         RETURN
         FALTAN12 RRF ALFA,F
         GOTO OTRO2
;*******************************************************

;RUTINA QUE RECIBE UN DATO DESDE EL DS1302
RECIBRTC1   BSF STATUS,RP0
         BSF TRISB,IO
         BCF STATUS,RP0
         MOVLW 0X08
         MOVWF ROTA
OTRO22      BSF UNDATO,7 ;Registro donde se guarda bit a bit el dato proveniente del DS1302
         BTFSS PORTB,IO
         BCF UNDATO,7
         BSF PORTB,SCLK
            CALL  RETARDO
         BCF PORTB,SCLK; SEÑAL DE RELOJ
         DECFSZ ROTA,F
         GOTO FALTAN22
         BCF PORTB,RST
         RETURN
FALTAN22    BCF STATUS,C
         RRF UNDATO,F
         GOTO OTRO22

;.......................................................
RETARDO
         CLRF   DELAY
BUCLE       INCF   DELAY
         BTFSS  DELAY,5  
            GOTO   BUCLE
            RETURN
            INCLUDE <RETARDOS.INC>
END

kenshinkof:
EL PASADO PROGRAMA QUE PUSE  ES PARA MANDAR LOS SEGUNDOS POR SERIAL A 300BSP PERO EN EL CICLO DE LECTURA PUEDES USAR LAS VARIABLES DE HOR MIN Y SEGUN PARA ALTERARLO COMO TU QUIERAS.

A TAMBIEN RETARDO.INC ES EL SIGUIENTE

;........................................................................
R_ContA   equ   20            
   R_ContB   equ   21
   R_ContC   equ   22
   

Retardo_1

      clrf    R_ContA
bug      incf    R_ContA

      clrf    R_ContB
bug2      incf    R_ContB
      
      clrf    R_ContC
bug3      incf    R_ContC

      btfss   R_ContC,7
      goto    bug3

      btfss   R_ContB,7
            goto    bug2

      btfss   R_ContA,4
      goto    bug

      return
;COPIALO EN NOTE PAD GUARDALO COMO RETARDOS.INC Y PEGALO EN MPAST SUITE

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa