#include <16F877.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES LVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use i2c(Slave,Fast,sda=PIN_C4,scl=PIN_C3,force_hw,address=0xa0)

BYTE address, buffer[0x10];
 BYTE incoming, state;
#INT_SSP
void ssp_interupt ()
{
   disable_interrupts(GLOBAL);
   disable_interrupts(INT_SSP);
   state = i2c_isr_state();

   if(state < 0x80)                     //Master is sending data
   {
      if (state ==0)
      {
      incoming = i2c_read();
      printf("fogadott adat: %x\r",incoming);
      }
      if(state == 1)                     //First received byte is address
      address = incoming;

      if(state == 2)                     //Second received byte is data
      incoming=buffer[address];
   }

   if(state == 0x80)                     //Master is requesting data
   {
      i2c_write(buffer[address]);

        }


}

void main ()
{
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   enable_interrupts(GLOBAL);
   enable_interrupts(INT_SSP);
   if (state == 0)
   {

   }
   // TODO: USER CODE!!

}
