Ðề tài: Giao tiếp I2C
View Single Post
Old 30-11-2011, 12:38 AM   #20
chuvanhuu
Nhập môn đệ tử
 
Tham gia ngày: Nov 2011
Bài gửi: 5
:
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>
chuvanhuu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn