#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8,parity=N)
#use i2c(Master,sda=PIN_C4,scl=PIN_C3)

#include <lcd.c>   
#include <EEPROM_24512.c>     //Ficheros driver de los periféricos
#include <RTC_ds1307.c>
#include <TEMP_ds1621.c>
#include <floatee.c>

int dat_in, cnt, hr,min,sec;
int16 address=0;
int dat_serie[7];  
float dato, a;
int8 b;
#int_rda              //Interrupción para el puerto serie
rda_isr()
{
dat_in=getc();   //Lee el puerto serie
printf("\r");
if (dat_in=='2')  //Si es "2" se visualizan los primeros datos de la eeprom
  {
    for(cnt=0;cnt<=6;cnt++)  //Lectura de los 7 primeros bytes de la eeprom
     {
      dat_serie[cnt]=read_ext_eeprom(cnt);  
     }
   for(cnt=0;cnt<=6;cnt++)    //Visualización de los 7 primeros bytes de la eeprom
     {
      printf("Byte %u=%3u \r",cnt,dat_serie[cnt]);
     }
  }
}

void main() {
  
   lcd_init();
   enable_interrupts(int_rda);
   enable_interrupts(global);
   address=0;
   
  printf("Pulsar 1 para leer datos\r");    //Menú para el terminal serie
  printf("Pulsar 2 para visualizar datos\r");

while(1){

//! if(dat_in=='1')                  //Si es "1" se inicia la lectura y grabado en la eeprom
//!  {
   init_temp(0x01);      //Inicializa el DS1621
   delay_ms(100);
   tiempo(hr,min,sec); 
   dato = read_full_temp(0x01);  
   WRITE_FLOAT_EXT_EEPROM(address,dato);  //Guarda 4 bytes del FLOAT
   address=address+4;
   WRITE_EXT_EEPROM(address++,hr);    //Guarda byte de hora
   WRITE_EXT_EEPROM(address++,min); //Guarda byte de minuto
 WRITE_EXT_EEPROM(address++,sec);  //Guarda byte de segundo
  
 if(input(PIN_A0)==0)                  //Si es "1" se inicia la lectura y grabado en la eeprom
  {
  if (address==0xffff) address=0; 


   lcd_gotoxy(1,1);
   printf(lcd_putc,"%4.1f C\n",READ_FLOAT_EXT_EEPROM(address));
  address=address+4;
 printf(lcd_putc,"%4.1f C\n",READ_FLOAT_EXT_EEPROM(address));
//!
//!    
//!  printf(lcd_putc,"%4.1f C\n",READ_FLOAT_EXT_EEPROM(address++));
//!
//!  printf(lcd_putc,"%4.1f C\n",READ_FLOAT_EXT_EEPROM(address));
//!  address=address-4;
  

  
//!printf(lcd_putc,"%2u",b); //Visualiza en LCD la temperatura
  //!   printf(lcd_putc,"%2u:%2u:%2u",hr,min,sec);  //Visualiza en LCD la hora

    //Cuando se termina la eeprom vuelve al principio.
 }
 if (address==0xffff) address=0; 
 }
}

