PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-11-2011, 10:50 AM   #1
tan_truong
Đệ 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.
tan_truong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-11-2011, 12:38 AM   #2
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
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 10:39 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam