#include "esclavo_fe_1.h"
int8 state, Direc_master, iic_dato, comando;
int8 dato[5];
int8 cnt=0;
#int_SSP
void SSP_isr(void){
disable_interrupts(INT_SSP);
//int8 comando;
state = i2c_isr_state();
if(state==0)
{
Direc_Master=i2c_read();
printf("\n\r direc_master: %X "Direc_Master);
//if(SSPADD==S1){
//printf("\n\r state==0 soy S1: %X "SSPADD);
//}
}
if(state < 0x80)
{
//iic_dato=i2c_read();
//comando=iic_dato;
dato[cnt]=i2c_read();
printf("\n\r dato[%u]:%u"cnt,dato[cnt]);
if(dato[3]==99){
cnt=0;
}
else{
cnt=cnt+1;
}
//Aqui colocas lo que necesites hacer con el dato enviado por el maestro
//printf("\n\r comando recibo <80: %u"comando);
}
if(state == 0x80)
{
switch(comando)
{
Case Pide_Dato1:
i2c_write(Dato1);
output_high(PIN_B7);
delay_ms(300);
output_low(PIN_B7);
delay_ms(300);
output_high(PIN_B7);
delay_ms(300);
output_low(PIN_B7);
delay_ms(300);
output_high(PIN_B7);
delay_ms(300);
output_low(PIN_B7);
printf("\n\r Llego dato.");
break;
Case Pide_Dato2:
i2c_write(Dato2);
output_high(PIN_B2);
break;
}
}
}
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_SSP);
enable_interrupts(GLOBAL);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
printf("\n\r Preparado S1: ");
int8 dat;
while(true){
if(P1==1){
for(dat=0;dat<5;dat++){
printf("\n\r dato[%u]:%u"dat,dato[dat]);
}//fin for
//printf("\n\r comando en p1: %X"comando);
//enable_interrupts(INT_SSP);
}//fin if
//printf("\n\r comando en while: %d"comando);
enable_interrupts(INT_SSP);
}//fin while
}