#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NODEBUG,NOBROWNOUT,NOWRT,NOLVP,PUT
#use delay(clock=4000000)
#use i2c(Master, sda=PIN_C4, scl=PIN_C3)
#define LCD_DB4 PIN_B4 //Configuramos pines...
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#define LCD_E PIN_B0
#define LCD_RS PIN_B1
#define LCD_RW PIN_B2 //...para el LCD
#define DAL_SCL PIN_A0
#define DAL_SDA PIN_A1
#include <flex_lcd.0.c> //Libreria manejo LCD
#include <_ds1307.c> //Libreria manejo RTC
#include <ds1621.c> //Libreria sensor Temp
//FUNCIONES ESCRITURA Y LECTURA EEPROM INTERNA
void write_string_eeprom(int address,char *data){
while(*data!=0){
write_eeprom(address++,*data);
data++;
}
write_eeprom(address,0);
}
void read_string_eeprom(int address,char *sl){
sl--;
do{
sl++;
*sl=read_eeprom(address++);
}
while(*sl!=0);
}
byte hr,min,sec,day,month,yr,dow;
char sdow[11];
byte value;
void main(){
char mystr[40];
char alarma1[]="08:30";
char alarma2[]="09:00";
char alarma3[]="09:25";
char alarma4[]="10:00";
char alarma5[]="10:20";
char alarma6[]="10:30";
char *leido=mystr;
//....
//MENU DE PRESENTACION
lcd_init();
lcd_gotoxy(2,1);
printf(lcd_putc,"Reloj Alarma"); //Menu de presentacion.
lcd_gotoxy(2,2);
printf(lcd_putc,"Miquel_S");
delay_ms(1500);
lcd_putc("\f");
//ESCRITURA ALARMAS
write_string_eeprom(0x00,alarma1);
write_string_eeprom(0x06,alarma2);
write_string_eeprom(0x0C,alarma3);
write_string_eeprom(0x12,alarma4);
write_string_eeprom(0x18,alarma5);
write_string_eeprom(0x1E,alarma6);
//LECTURA ALARMAS
lcd_init();
printf(lcd_putc,"LISTA ALARMAS");
delay_ms(800);
read_string_eeprom(0x00,leido);
printf(lcd_putc,"\n%s",leido);
delay_ms(1000);
read_string_eeprom(0x06,leido);
printf(lcd_putc,"\n%s",leido);
delay_ms(1000);
read_string_eeprom(0x0C,leido);
printf(lcd_putc,"\n%s",leido);
delay_ms(1000);
read_string_eeprom(0x12,leido);
printf(lcd_putc,"\n%s",leido);
delay_ms(1000);
read_string_eeprom(0x18,leido);
printf(lcd_putc,"\n%s",leido);
delay_ms(1000);
read_string_eeprom(0x1E,leido);
printf(lcd_putc,"\n%s",leido);
delay_ms(1000);
//INICIALIZA DS1307
ds1307_init(DS1307_ALL_DISABLED);
printf(lcd_putc,"\fInicializando\nDS1307...");
delay_ms(1000);
ds1307_set_date_time(11,2,10,3,22,05,0);
//LEE FECHA Y HORA ACTUAL DS1307
ds1307_get_day_of_week((char*) sdow);
ds1307_get_date(day,month,yr,dow);
ds1307_get_time(hr,min,sec);
printf(lcd_putc,"\f%s %02d-%02d-%02d",sdow,day,month,yr);
printf(lcd_putc,"\n%02d:%02d:%02d",hr,min,sec);
//INICIALIZA Y LEE TEMPERATURA DS1621
init_temp();
read_temp();
value=read_temp();
lcd_gotoxy(10,2);
printf(lcd_putc,"Temp:%u ",value);
//delay_ms(1000);
}