#include <18f4550.h> //incluye la libreria del pic//
#fuses INTRC_IO,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN
#use delay (clock = 4000000)//Velocidad del reloj interno del pic//
#include <lcd.c> //libreria para manejo del LCD//
#include <DS1307.c> //libreria del reloj digital
#define use_portd_lcd //define el puerto de comunicacion del micro con la lcd
int sec_ctd,min_ctd,hr_ctd,dia_ctd,mes_ctd,anio_ctd,sem_ctd;
int sec,min,hora,dia,mes,anio,dow,sem;
char fecha[7];
#define entrada input
#define enciende output_high
#define btnDiaLet PIN_B3 //se coloca la semana
#define btnDiaMen PIN_B6
#define btnStr PIN_C0 //comienza el reloj a ejecutarse desde la hora y fechas indicadas
#define btnIn_hr PIN_A0
#define btnDe_hr PIN_A1
#define btnIn_min PIN_A2
#define btnDe_min PIN_A3
#define btnin_dia PIN_A4
#define btnde_dia PIN_B4
#define btnin_mes PIN_A5
#define btnde_mes PIN_B5
#define btnIn_ano PIN_A6
#define btnDe_ano PIN_B2
void main()
{
lcd_init();
ds1307_set_date_time(dia,mes,anio,dow,hora,min,sec);
for(;;)
{
if(entrada(btnIn_min)==1)//se configuran los botones de las horas
{
min=min_ctd++;
if(min_ctd==59)
{
min_ctd=0;
}
}
if(entrada(btnIn_hr)==1)
{
hora=hr_ctd++;
if(hr_ctd==23)
{
hr_ctd=0;
}
}
if(entrada(btnDe_min)==1)
{
min=min_ctd--;
if(min_ctd==0)
{
min_ctd=59;
}
}
if(entrada(btnDe_hr)==1)
{
hora=hr_ctd--;
if(hr_ctd==0)
{
hr_ctd=23;
}
}
//se terminan de configurar los botones de hora
if(entrada(btnin_dia)==1)//se comienzan a configurar los botones de la fecha
{
dia=dia_ctd++;
if(dia_ctd>31)
{
dia_ctd=0;
}
}
if(entrada(btnde_dia)==1)
{
dia=dia_ctd--;
if(dia_ctd<0)
{
dia_ctd=31;
}
}
if(entrada(btnin_mes)==1)
{
mes=mes_ctd++;
if(mes_ctd>12)
{
mes_ctd=0;
}
}
if(entrada(btnde_mes)==1)
{
mes=mes_ctd--;
if(mes_ctd<0)
{
mes_ctd=12;
}
}
if(entrada(btnIn_ano)==1)
{
anio=anio_ctd++;
if(anio_ctd==99)
{
anio_ctd=0;
}
}
if(entrada(btnDe_ano)==1)
{
anio=anio_ctd--;
if(anio_ctd==0)
{
anio_ctd=99;
}
}
//se termina de configurar los botones de fecha
if(enciende(btnDiaLet)==1)//se configura los dias de la semana
{
dow=sem++;
if(dow==7)
{
dow=0;
}
}
if(entrada(btnStr))
{
enciende(btnIn_min);
enciende(btnDe_min);
enciende(btnIn_hr);
enciende(btnDe_hr);
enciende(btnin_mes);
enciende(btnin_dia);
enciende(btnde_mes);
enciende(btnde_dia);
enciende(btnIn_ano);
enciende(btnDe_ano);
enciende(btnDiaLet);
enciende(btnDiaMen);
ds1307_set_date_time(dia,mes,anio,dow,hora,min,sec);
}
ds1307_get_date(dia,mes,anio,dow); /// se obtiene la fecha
ds1307_get_time(hora,min,sec); /// se obtiene la hora
ds1307_get_day_of_week(fecha); //coloca el dia
lcd_gotoxy(1,1);
printf(lcd_putc," \f%s%02u/%02u/20%02u",fecha,dia,mes,anio);
lcd_gotoxy(5,2);
printf(lcd_putc, "%02u:%02u:%02u",hora, min, sec);
delay_ms(200);
} //for
}// void main