Domingo 22 de Diciembre de 2024, 02:27
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Específica
»
Microcontroladores
(Moderador:
© Jonathan ©
) »
Ds1307
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ds1307 (Leído 1905 veces)
hailander
Nuevo Miembro
Mensajes: 7
Ds1307
«
en:
Domingo 26 de Agosto de 2007, 02:46 »
0
Hola a todos, estoy trajando en un relog con ds1307 para visualizarlo en display de 4 segmentos, pero he tenido varios problemitas; al momento de visualizar solo me aparecen el numero 0 y el 5. Ademas lo he intentado simular en proteus pero me aparece lo mismo.
Alguien me podria dar idea de que esta pasando.
GRACIAS
Tweet
© Jonathan ©
Moderador
Mensajes: 1671
Nacionalidad:
Re: Ds1307
«
Respuesta #1 en:
Domingo 26 de Agosto de 2007, 23:03 »
0
Bueno, ayudaria mucho si colocaras el codigo que utilizas, por lo que cuentas es seguro que el problema esta en la rutina para escribir en los displays.. usas C o ASM¿?. Saludos
EINSTEC Tecnología
«La única fuente del conocimiento es la experiencia.»
«Lo importante es no dejar de hacerse preguntas.»
hailander
Nuevo Miembro
Mensajes: 7
Re: Ds1307
«
Respuesta #2 en:
Miércoles 29 de Agosto de 2007, 01:54 »
0
Bueno el programa lo estoy trabajando en ASM; aqui les va:
LIST P=16F877
INCLUDE P16F877.INC
CBLOCK H'F0'
SEGUNDO
MINUTO
HORA
DIASEMANA
DIA
MES
AÑO
I2C_BANDERAS
PDel0
PDel1
ENDC
ORG 0x00
GOTO INICIO
ORG 0x05
INICIO CLRF PORTB
CLRF PORTC
CLRF PORTA
CLRF PORTD
CALL BAN1
MOVLW b'00000110'
MOVWF ADCON1
CLRF TRISB
BSF TRISB,0
MOVLW 0xFF
MOVWF TRISC
CLRF TRISD
MOVLW 0xCF
MOVWF OPTION_REG
MOVLW 0x80
MOVWF SSPSTAT
MOVLW .9
MOVWF SSPADD
CALL BAN0
;CONFIGURACION DEL MODO MSSP EN MODO MAESTRO I2C
MOVLW 0x28
MOVWF SSPCON
CLRF I2C_BANDERAS
CALL CARGA_INICIAL
CALL ESCRIBIR
MOVLW 0x28
MOVWF SSPCON
CALL CONDICION_START
MOVLW b'11010000'
CALL ENVIAR_BYTE
MOVLW b'00000111'
CALL ENVIAR_BYTE
MOVLW b'00010000'
CALL ENVIAR_BYTE
CALL CONDICION_STOP
RTC_LEE MOVLW 0x28
MOVWF SSPCON
CALL CONDICION_START
MOVLW 0xD0
CALL ENVIAR_BYTE
MOVLW 0x00
CALL ENVIAR_BYTE
CALL CONDICION_STOP
CALL CONDICION_START
MOVLW 0xD1
CALL ENVIAR_BYTE
CALL LEER_BYTE
MOVWF SEGUNDO
CALL LEER_BYTE
MOVWF MINUTO
CALL LEER_BYTE
MOVWF HORA
CALL LEER_BYTE
MOVWF DIASEMANA
CALL LEER_BYTE
MOVWF DIA
CALL LEER_BYTE
MOVWF MES
BSF I2C_BANDERAS,0
CALL LEER_BYTE
MOVWF AÑO
CALL CONDICION_STOP
BCF I2C_BANDERAS,0
;VISUALIZACION
CALL RETARDO
CALL RETARDO
MOVLW H'01' ;Activa transistor
MOVWF PORTA
MOVF MINUTO,F
RLF MINUTO,W
MOVWF PORTD
CALL RETARDO
CALL RETARDO
MOVLW H'02' ;Activa transistor
MOVWF PORTA
SWAPF MINUTO,F
RLF MINUTO,W
MOVWF PORTD
CALL RETARDO
CALL RETARDO
MOVLW H'04' ;Activa transistor
MOVWF PORTA
MOVF SEGUNDO,F
RLF SEGUNDO,W
MOVWF PORTD
CALL RETARDO
CALL RETARDO
MOVLW H'08' ;Activa transistor
MOVWF PORTA
SWAPF SEGUNDO,F
RLF SEGUNDO,W
MOVWF PORTD
CALL RETARDO
CALL RETARDO
GOTO RTC_LEE
CONDICION_START BCF PIR1,SSPIF
CALL BAN1
BSF SSPCON2,SEN
CALL BAN0
TERMINO_START BTFSS PIR1,SSPIF
GOTO TERMINO_START
RETURN
CONDICION_STOP BCF PIR1,SSPIF
CALL BAN1
BSF SSPCON2,PEN
CALL BAN0
TERMINO_STOP BTFSS PIR1,SSPIF
GOTO TERMINO_STOP
RETURN
ENVIAR_BYTE BCF PIR1,SSPIF
MOVWF SSPBUF
ENVIAR_BYTE_ACK BTFSS PIR1,SSPIF
GOTO ENVIAR_BYTE_ACK
RETURN
LEER_BYTE BCF PIR1,SSPIF
CALL BAN1
BSF SSPCON2,RCEN
CALL BAN0
LEER_W BTFSS PIR1,SSPIF
GOTO LEER_W
BTFSC I2C_BANDERAS,0
GOTO NO_ACK
ACK BCF PIR1,SSPIF
CALL BAN1
BCF SSPCON2,ACKDT
BSF SSPCON2,ACKEN
CALL BAN0
ACK_W BTFSS PIR1,SSPIF
GOTO ACK_W
RETURN
NO_ACK BCF PIR1,SSPIF
CALL BAN1
BSF SSPCON2,ACKDT
BSF SSPCON2,ACKEN
CALL BAN0
NO_ACK_W BTFSS PIR1,SSPIF
GOTO NO_ACK_W
MOVF SSPBUF,W
RETURN
CARGA_INICIAL MOVLW 0x00
MOVWF SEGUNDO
MOVLW 0x00
MOVWF MINUTO
CLRF HORA
MOVLW 0x06
MOVWF DIASEMANA
MOVLW 0x02
MOVWF DIA
MOVLW 0x03
MOVWF MES
MOVLW 0x07
MOVWF AÑO
RETURN
ESCRIBIR CALL CONDICION_START
MOVLW 0xD0
CALL ENVIAR_BYTE
MOVLW 0x00
CALL ENVIAR_BYTE
MOVF SEGUNDO,W
CALL ENVIAR_BYTE
MOVF MINUTO,W
CALL ENVIAR_BYTE
MOVF HORA,W
CALL ENVIAR_BYTE
MOVF DIASEMANA,W
CALL ENVIAR_BYTE
MOVF DIA,W
CALL ENVIAR_BYTE
MOVF MES,W
CALL ENVIAR_BYTE
MOVF AÑO,W
CALL ENVIAR_BYTE
CALL CONDICION_STOP
RETURN
BAN0 BCF STATUS,RP0
BCF STATUS,RP1
RETURN
BAN1 BSF STATUS,RP0
BCF STATUS,RP1
RETURN
BAN2 BCF STATUS,RP0
BSF STATUS,RP1
RETURN
BAN3 BSF STATUS,RP0
BSF STATUS,RP1
RETURN
RETARDO movlw .7 ; 1 set numero de repeticion (
movwf PDel0 ; 1 |
PLoop1 movlw .213 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 clrwdt ; 1 ciclo delay
return
END
Alternative
Miembro MUY activo
Mensajes: 176
Re: Ds1307
«
Respuesta #3 en:
Viernes 31 de Agosto de 2007, 15:22 »
0
Saludos.
Mira antes que nada se hace un poco dificil visualizar tu programa ya que me cuesta encontrar las etiquetas y se ve todo amontonado, hubiera sido preferible que lo hubieras comprimido y adjuntado, pero en fin.
Mira yo te recomendaria que lo hicieras en un LCD, y una vez que te funcione lo pases al Display.
Mira el DS1307 primero debes inicializarlo siempre, y posteriormente mandar a leer y posteriormente preguntar si ya ha sido activado (respaldo de pila), si ya ha sido activado entonces solo te dedicas a leer cuando exista una interrupcion externa del puso cuadrado del ds1307. sino ha sido activado y es la primera ves que lo vas a utilizar debes mandar a inicializar y cargarle fecha inicial.
checa en el DataSheet cual es el orden y su direccion y solo mandas en I2C.
Saludos
bye
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Específica
»
Microcontroladores
(Moderador:
© Jonathan ©
) »
Ds1307