Hola amigos acudo a ustedes por varias dudas que tengo en el proyecto que estoy realizando, siempre agradecido por que en este foro y sus participantes he aprendido mucho y siempre me han prestado ayuda
Es primera vez que trabajo con el i2c y este ds1307, pero me he documentado bastante y he estado luchando con el codigo..
Mi programa consiste en configurar un ds1307 con un pic16f877a, configuro la hora actual por medio de programacion... sin lcd ni teclado ni nada... teniendo el pic ubicado en el tiempo, hora actual dia, mes, año y todo eso... quiero hacer unas alarmas para encender un timbre escolar... el timbre lograra encenderse por lo menos 5 segundos, a las 8am, 10am 4pm.. esta se ubicara en el puerto C,1.
Este se encender todo el año.. menos los días sábado y domingo y en el mes de agosto que es seguro que el colegio esta de vacaciones.. por que el inicio y final de clases varia cada año asi que pensé que cuando se fuera de vacaciones solo desconectaran el pic(su alimentacion) y que siga trabajando el ds1307, y cuando regresen conecten el pic(por medio de un switch) y asi pueda encender el timbre normal mente...
El led que coloque es para checar a cada rato si el reloj esta activo(funcionando) si no esta el led en portc,0 encenderá, por si deja de funcionar la cosa.. se que es el ds1307.
Pero tengo varios dias y noches luchando con el código pero aun no me da lo que quiero.
Como hacer para que cuando enciendan el pic saber si el reloj ya esta trabajando(ya configurado) por que si hay un apagon el pic configurara una hora que no es y cuando regresen de vacaciones. ?
una pregunta tonta.. cuando configuro el rtc, para escribir los segundos, minutos, etc, es decir sus registros, tengo que enviar los datos en binario y cuando los leo están en bcd???... o yo le envio datos en bcd(al reloj) y el me envia datos en bcd. ???????
Leyendo el hilo del tema me di cuenta que cuando leo los registros y los guardo en las variables para luego comparar si es la hora y dia correcto para encender el timbre podría ser mi error.. sera cierto??.. y como hago para comparar 2 números en bcd ?. O sera que tengo que llevar ese bcd a binario para comparar después??
no lo trabajo con interrupciones por que como soy principiante nunca he trabajado con ellas.. seria mejor hacer el programa con interrupciones?
Adjunto mi esquema en proteus y el codigo. Espero que puedan ayudarme
Gracias de atemano...