Bueno pues, como dice el tema, solo quiero enviar datos de un pic a otro, en una sola direccion, supongo que es mas sencillo, ahorita estoy probando con el PIC16F877A, aunque supongo podria adaptarme a cualquier otro pic. No es un puerto de alta velocidad o de una gran carga de datos, a lo mucho enviaria 6 bytes , con sus respectivos tiempos entre cada uno. Soy relativamente nuevo en pic's, conozco algo de como programarlos en C y ya he hecho algunos proyectos sencillos; pero ahorita nomas no puedo hacer que se comuniquen 2 pics, he hecho pruebas simulando en proteus y no funciona, he buscado en internet y usualmente la informacion o esta truncada, es decir nunca llegan a una conclusion, o siempre difiere, el manual de ccs me indica las funciones
	
	
	
		
Pero aunque he cambiado los codigos varias veces, no funciona. Esperaba que me pudieran ayudar a encontrar mi problema, que me falta o que me sobra, o simplemente la fomra en que se envian y adquieren los datos.
Pongo los ultimos codigos que hice:
Maestro:
	
	
	
		
Esclavo:
	
	
	
		
Aqui el maestro se supone envia 3 datos al esclavo, con 1 segundo de diferencia entre si, y el esclavo muestra que ha recibido un dato con un led oscilante en algun pin del puerto B.
Espero su ayuda, Gracias de antemano.
				
			
		Código:
	
	i2c_start()
i2c_poll()
i2c_stop()
i2c_write()
i2c_read()
	Pongo los ultimos codigos que hice:
Maestro:
		Código:
	
	#INCLUDE <16F877.h> 
#USE DELAY(clock=4000000)
#USE I2C (MASTER, SDA=PIN_C4, SCL=PIN_C3,ADDRESS=0XA0,SLOW,FORCE_HW)
#BYTE porta= 0x05
#BYTE portb= 0x06
#BYTE portc= 0x07
#BYTE porta_tris= 0x85
#BYTE portb_tris= 0x86
#BYTE portc_tris= 0x87
main()
{
   porta_tris= 0x00;
   portb_tris= 0b11111111;
   portc_tris= 0x00;
i2c_start();
i2c_write(0b00111111);
i2c_stop();
delay_ms(1000);
i2c_start();
i2c_write(0XA1);
i2c_write(0b11111111);
i2c_stop();
delay_ms(1000);
i2c_start();
i2c_write(0XA0);
i2c_write(0b11111111);
i2c_stop();
  
delay_ms(1000);  
  
}
	Esclavo:
		Código:
	
	#INCLUDE <16F877.h> 
#USE DELAY(clock=4000000)
#USE I2C (SLAVE, SDA=PIN_C4, SCL=PIN_C3,ADDRESS=0XA1,SLOW,FORCE_HW)
#BYTE porta= 0x05
#BYTE portb= 0x06
#BYTE porta_tris= 0x85
#BYTE portb_tris= 0x86
main()
{
INT R1;
   porta_tris= 0x00;
   portb_tris= 0x00;
   portc_tris= 0b11111111;
R1=0;
      if(i2c_poll())
      {
         R1=i2c_read();
         output_toggle(PIN_B0);
      }
      if(i2c_poll())
      {
         R1=i2c_read();
         output_toggle(PIN_B1);
      }
      
      
      if(i2c_poll())
      {
         R1=i2c_read();
         output_toggle(PIN_B2);
      }
  
}
	Aqui el maestro se supone envia 3 datos al esclavo, con 1 segundo de diferencia entre si, y el esclavo muestra que ha recibido un dato con un led oscilante en algun pin del puerto B.
Espero su ayuda, Gracias de antemano.