Autor Tema: reloj con ds1307 no arranca en la practica  (Leído 1859 veces)

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

Desconectado juanc08

  • PIC10
  • *
  • Mensajes: 1
reloj con ds1307 no arranca en la practica
« en: 14 de Julio de 2012, 14:55:24 »
Muy buenas tardes
respetuosamente pido colaboracion con el proyecto reloj con ds1307 que al probarlo en proteus funciona perfectamente,pero al montarlo en protoboard no arranca,por lo que he leido me falta arrancar el ds1307 con el bit ch=0, pero no se don de insertarlo en el programa,trabajo con proton cualquie ayuda sera muy agradecida
adjunto el programa en PROTON, .bas y .dsn

Device 16F628A
 Config  INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
CMCON=7
TRISB=%11
TRISA =%111 ;el puerto A.0 es de entrada
define lcd_dreg PORTB
define lcd_dbit 4
define lcd_rsreg PORTB
define lcd_rsbit 3
define lcd_ereg
define lcd_ebit 2
define I2C_SCLOUT 1 ;para que no necesite resistencia pull-up en SCL
CPIN VAR PORTA.1 ;pin señal de reloj I2C
DPIN VAR PORTA.0 ;pin de datos I2C
segu VAR Byte ;definir tamaño de variable segundos 1 a 255
minu VAR Byte ;variable para los minutos
hora VAR Byte ;variable para las horas
diaS VAR Byte ;variable día de la semana
diaF VAR Byte ;variable día fecha del mes
mes VAR Byte ;variable mes
anio VAR Byte ;variable año de 2 dígitos
addr var Byte
escribe var Byte
actualizado VAR Bit ;variable para almacenar un 1 o 0
EData 0, 0 ;memoria 0 con el valor inicial 0, sirve para
          ;indicar que nunca ha corrido este programa
actualizado=ERead 0 ;carga el valor de la memoria EEPROM dirección 0
If actualizado =0 Then grabarRTC ;si es la 1ra vez que corre ir a grabar RTC
;caso contrario sólo leer el RTC


INICIO:

I2Cin DPIN,CPIN,%11010000,0,[segu] ;leer los datos de mem. 0,
I2Cin DPIN,CPIN,%11010000,1,[minu] ;1,2,..y guardarlos en sus
I2Cin DPIN,CPIN,%11010000,2,[hora] ;respectivas variables
I2Cin DPIN,CPIN,%11010000,3,[diaS]
I2Cin DPIN,CPIN,%11010000,4,[diaF]
I2Cin DPIN,CPIN,%11010000,5,[mes]
I2Cin DPIN,CPIN,%11010000,6,[anio]
Print $fe,1, HEX2 hora,":", HEX2 minu,":", HEX2 segu,
Print $fe,$c0 ;saltar a la 2da línea del LCD
;mostrar día de la semana

If diaS=$1 Then Print "Dom."
If diaS=$2 Then Print "Lun."
If diaS=$3 Then Print "Mar."
If diaS=$4 Then Print "Mie."
If diaS=$5 Then Print "Jue."
If diaS=$6 Then Print "Vie."
If diaS=$7 Then Print "Sab."

Print $fe,$c5, HEX2 diaF,"/" ;mostrar el día del mes /
Print $fe,$cB,"/20", HEX2 anio ; mostrar año /20 + 04
Print $fe,$c8 ;pasar a la casilla 8

If mes=$1 Then Print "ene" ;mostrar el mes
If mes=$2 Then Print "feb"
If mes=$3 Then Print "mar"
If mes=$4 Then Print "abr"
If mes=$5 Then Print "may"
If mes=$6 Then Print "jun"
If mes=$7 Then Print "jul"
If mes=$8 Then Print "ago"
If mes=$9 Then Print "sep"
If mes=$10 Then Print "oct"
If mes=$11 Then Print "nov"
If mes=$12 Then Print "dic"
 DelayMS 500

GoTo INICIO

 ; ************************ subrutina grabar *********************
grabarRTC:

I2Cout DPIN,CPIN,%11010000,0,[$00] ;setear 00 segundos
DelayMS 10 ;retardo para finalizar grabación
I2cout DPIN,CPIN,%11010000,1,[$30] ;setear 30 minutos
DelayMS 10
I2Cout DPIN,CPIN,%11010000,2,[$22] ;setear las 13 horas
DelayMS 10
I2Cout DPIN,CPIN,%11010000,3,[$3] ;setear día lunes, D=1,L=2
DelayMS 10 ;M=3, M=4, J=5, V=6, S=7
I2Cout DPIN,CPIN,%11010000,4,[$12] ;setear día 27 del mes
DelayMS 10
I2Cout DPIN,CPIN,%11010000,5,[$6] ;setear mes septiembre
DelayMS 10
I2Cout DPIN,CPIN,%11010000,6,[$12] ;setear año 04
DelayMS 10
I2Cout DPIN,CPIN,%11010000,7,[$10] ;control %00010000 para
DelayMS 10 ;encender el led cada 1 seg.
EWrite 0,[1] ;escribe en la memoria 0 el valor de 1 para que no
;se vuelva a grabar otra vez estos datos en el RTC


GoTo INICIO ;ir a presentar los datos en el LCD
« Última modificación: 14 de Julio de 2012, 22:06:04 por juanc08 »