![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Nov 2010
Bài gửi: 17
: |
Chào bạn,
Thứ 1, bạn viết chương trình cho Slave mà sao hok có hàm nhận mà chỉ có hàm truyền ko vậy? Thứ 2, nếu bạn dùng ccs thì vào phần help để xem lại lệnh state=i2c_isr_state(); bạn xem thử giá trị state bằng bao nhiêu thì gửi, bao nhiêu thì nhận. Thứ 3, nếu con vđk của bạn còn làm việc khác nữa thì nên xem lặp cách dùng vòng lặp thế này. Chúc bạn thành công. |
![]() |
![]() |
![]() |
#2 |
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> |
![]() |
![]() |
![]() |
|
|