Autor Tema: reloj de tiempo real  (Leído 1846 veces)

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

Desconectado enero0022

  • PIC10
  • *
  • Mensajes: 36
reloj de tiempo real
« en: 24 de Abril de 2008, 18:29:22 »
alguien tendra por ahi algun ejemplo de un programa en ensamblador para programar un reloj de tiempo real ya  que tengo
que activar una valvula una vez al dia de lunes a viernes el reloj puede ser pcf8583 o bien el ds1307 muchas gracias

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: reloj de tiempo real
« Respuesta #1 en: 24 de Abril de 2008, 18:32:14 »
Como se nota que no usaste el buscador
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: reloj de tiempo real
« Respuesta #2 en: 25 de Abril de 2008, 06:17:39 »
Tiempo real es que recibas información dentro del intervalo de tiempo definido por el programador.

Después hay tres clases creo recordar....

En el subforo de ASM encontrarás multitud de ejemplos, como ya te han comentado, al respecto.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Expo3871

  • PIC10
  • *
  • Mensajes: 5
Re: reloj de tiempo real
« Respuesta #3 en: 25 de Abril de 2008, 19:48:11 »
MOVLW   0X00
      MOVWF   SEGUNDOS   
      MOVLW   0X10   
      MOVWF   DATO
      MOVLW   0X07
      MOVWF   DIRECCION
      CALL   WRITE_RTC

      MOVF   SEGUNDOS,W
      MOVWF   DATO
      CLRF   DIRECCION
      CALL   WRITE_RTC

      MOVF   MINUTOS,W
      MOVWF   DATO
      MOVLW   0X01
      MOVWF   DIRECCION
      CALL   WRITE_RTC
      
      MOVF   HORAS,W
      MOVWF   DATO
      MOVLW   0X02
      MOVWF   DIRECCION
      CALL   WRITE_RTC


;////////////RUTINAS PARA OPERACIONES CON EL DS1307//////////////////

WRITE_RTC
      CALL   SEND_START
      MOVLW   0XD0
      CALL   SEND_BYTE
      MOVF   DIRECCION,W
      CALL   SEND_BYTE
      MOVF   DATO,W
      CALL   SEND_BYTE   
      CALL   SEND_STOP
      RETURN

READ_RTC
      CALL   SEND_START
      MOVLW   0XD0
      CALL   SEND_BYTE
      MOVF   DIRECCION,W
      CALL   SEND_BYTE
      CALL   SEND_START2
      MOVLW   0XD1
      CALL   SEND_BYTE
      CALL   LEER_BYTE
      CALL   SEND_STOP
      RETURN
         

;#####################################                 
;#####  RUTINAS DEL PROTOCOLO I2C
;#####################################

;////////////RUTINA PARA ENVIAR UN START//////////////////
SEND_START
      BCF    PIR1,SSPIF
      BANKSEL   SSPCON2             ; SELECCIONA EL BANCO 1 DE RAM
      BSF    SSPCON2,SEN    ; ACTIVA SECUENCIA DE INICIO
      BANKSEL   PIR1             ; REGRESA AL BANCO 0 DE RAM
      BTFSS    PIR1,SSPIF       ; FIN DE SECUENCIA DE INICIO ??
      GOTO    $-1          ; NO, SEGUIR ESPERAR
      RETURN

;////////////RUTINA PARA ENVIAR UN RE-START//////////////////
SEND_START2
      BANKSEL   SSPCON2
      BSF    SSPCON2,1 ; ACTIVA SECUENCIA RE-INICIO
      BTFSC    SSPCON2,1
      GOTO    $-1       ; NO, SEGUIR ESPERANDO
      BANKSEL   PORTC
      RETURN

   
;////////////RUTINA PARA ENVIAR UN STOP//////////////////
SEND_STOP
      NOP
      BANKSEL PIR1
      BCF    PIR1,SSPIF
      BANKSEL   SSPCON2             ; PASA AL BANCO 1
      BSF    SSPCON2,PEN    ; ACTIVA SECUENCIA DE STOP
      BANKSEL   PIR1            ; REGRESA AL BANCO 0
      BTFSS    PIR1,SSPIF       ; FIN DE SECUENCIA DE STOP ??
      GOTO    $-1          ; NO, SEGUIR ESPERADO
      RETURN

;////////////RUTINA PARA ENVIAR UN BYTE Y ESPERA DE ACK////////////
SEND_BYTE
      BCF    PIR1,SSPIF
      MOVWF    SSPBUF          ; BYTE A TRANSMITIR PASA AL BUFFER DE SALIDA
      BTFSS    PIR1,SSPIF       ; TERMINO DE TRANSMITIR??
      GOTO    $-1          ; NO, SEGUIR ESPERANDO
      BANKSEL   SSPCON2                ; SELECCIONA EL BANCO 0
      MOVLW    .40
      MOVWF   AUX_ACK
      SIG_ACK            
      BTFSS    SSPCON2,ACKSTAT ; MIRA EL ESTADO DEL BIT ACK
      GOTO   SALE_SEND
      DECFSZ   AUX_ACK,F
      GOTO   SIG_ACK
      GOTO    ERROR_I2C       ; ERROR!!
      SALE_SEND         
      NOP
      BANKSEL   PORTC
      RETURN

;////////////RUTINA PARA RECIBIR UN BYTE Y ENVIAR UN NOACK////////////
LEER_BYTE
      BCF    PIR1,SSPIF       ; BORRA LA BANDERA DEL MÓDULO MSSP
      BANKSEL   SSPCON2               ; SELECCIONA PÁGINA 1
      BSF    SSPCON2,RCEN    ; ACTIVA EL MODO RECEPTOR
      BANKSEL   PIR1             ; SELECCIONA PÁGINA 0
      BTFSS    PIR1,SSPIF       ; RECIBIDOS LOS 8 BITS ??
      GOTO    $-1          ; NO, SEGUIR ESPERADO
      MOVF    SSPBUF,W       ; MOVER LOS DATOS RECIBIDO
      MOVWF    RECIBO          ; AL REGISTRO DATOS PARA USARLOS LUEGO
       BCF    PIR1,SSPIF
      BANKSEL   SSPCON2
      BSF    SSPCON2,ACKDT   ; ACTIVA GENERACIÓN DE ACK DEL MAESTRO
      BSF    SSPCON2,ACKEN
       BANKSEL   PIR1
      BTFSS    PIR1,SSPIF      ; SE ENVIÓ ACK?
      GOTO    $-1
      RETURN

ERROR_I2C          
      BANKSEL   PORTC    
      CALL    SEND_STOP    
      MOVLW   0X88
      MOVWF   INTCON
      RETURN


 

anything