| 
	
	
		
		
		
		 cảm ơn bạn, đây là code con master, cái này thực ra ko phải mình viết 
<code> 
// chuong trinh cho master 
#include <16f877a.h> 
#include <def_877a.h> 
#fuses HS,NOWDT,NOPROTECT,NOLVP 
#use delay(clock= 4000000) 
#use i2c(master, SDA=PIN_C4, SCL=PIN_C3) 
int8  data, bo, i; 
#define   slave   0x10 
void  doc_i2c() 
{   
   i= 0; 
   while( i!=2) 
   { 
      i++; 
      i2c_start(); 
      i2c_write( slave+1); //nhan du lieu tu Slave 
      switch ( i) 
      { 
         case  1: data= i2c_read( 1); 
            break; 
         case  2: bo= i2c_read( 0); 
            break; 
      } 
   } 
} 
void main() 
{          
   trisd= 0; 
   portd= 0; 
   while(true) 
   { 
      doc_i2c(); 
      portd= data; 
      delay_ms( 100); 
   } 
} 
</code> 
=============================================== 
 
còn đây là code cho Slave nguyên mẫu, code slave bên trên do mình chỉnh sửa từ đây 
<code> 
// chuong trinh cho master 
#include <16f877a.h> 
#include <def_877a.h> 
#fuses HS,NOWDT,NOPROTECT,NOLVP 
#use delay(clock= 4000000) 
#use i2c(master, SDA=PIN_C4, SCL=PIN_C3) 
int8  data, bo, i; 
#define   slave   0x10 
void  doc_i2c() 
{   
   i= 0; 
   while( i!=2) 
   { 
      i++; 
      i2c_start(); 
      i2c_write( slave+1); //nhan du lieu tu Slave 
      switch ( i) 
      { 
         case  1: data= i2c_read( 1); 
            break; 
         case  2: bo= i2c_read( 0); 
            break; 
      } 
   } 
} 
void main() 
{          
   trisd= 0; 
   portd= 0; 
   while(true) 
   { 
      doc_i2c(); 
      portd= data; 
      delay_ms( 100); 
   } 
} 
 
</code> 
		
	
		
		
		
		
		
	
	 |