#include <16f877a.h>
#fuses NOWDT, XT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, CPD, NOWRT, PUT
#use delay(clock=4000000)
#use i2c(SLAVE,sda=PIN_C4,scl=PIN_C3,ADDRESS=0XA0,FORCE_HW)//NOFORCE_SW
#include <lcd.c>
#include <ds1302.c>
#define EEPROM_ADDRESS long int
#use fast_io(A)
#use fast_io(C) /// con esta instruccion evitamos que
#use fast_io(D) /// se este configurando cada vez que usamos
#use fast_io(E)
#byte portb = 6 /// alguna instruccion de entrada o salida
#byte portc = 7
int state,address,buffer[3],dato;
byte i2c_dato_entrada;
byte i2c_dato_funcion;
#INT_SSP
void ssp_interupt ()
{
state = i2c_isr_state();
if(state < 0x80) //Master esta enviando datos
{
i2c_dato_entrada = i2c_read();
}
if(state == 0x80) //master pide un dato
{
//i2c_write (buffer[address]); //Mandar el dato en la direccion solicitada
//i2c_write (buffer[address+1]);
//i2c_write (buffer[address+2]);
//i2c_write (buffer[0]); //Mandar el dato en la direccion solicitada
//i2c_write (buffer[1]);
//i2c_write (buffer[2]);
buffer[i2c_dato_funcion] = i2c_dato_entrada;
i2c_write(buffer[i2c_dato_funcion]);
}
}
int sec,min,hrs,day,month,yr,dow;
int pos1=0,fecha[6]={1,1,1,0,0,0};
void main()
{
rtc_init();
lcd_init();
enable_interrupts(INT_SSP); //Activamos las interrupciones de I2C
enable_interrupts(GLOBAL);
rtc_set_datetime (11,9,3,4,10,5); //// rtc_set_datetime(day,mth,year,dow,hour,min)
lcd_gotoxy(1,2); /// el tiempo deseado
lcd_putc("fecha:");
lcd_gotoxy(1,1); /// el tiempo deseado
lcd_putc("hora:");
int ban=0;
WHILE (1)
{
delay_ms(10) ;
//rtc_get_date(day,month,yr,dow); /// se obtiene la fecha
rtc_get_time(hrs,min,sec); /// se obtiene la hora
buffer[0]=sec;
buffer[1]=min;
buffer[2]=hrs;
lcd_gotoxy (6,1);
printf (lcd_putc, "%02d:%02d:%02d ", hrs,min,sec);
lcd_gotoxy (7,2);
printf (lcd_putc, "%02d/%02d/%02d_%02d ", day,month,yr,dato);
}
}