![]() |
|
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 |
Nhập môn đệ tử
Tham gia ngày: Nov 2011
Bài gửi: 5
: |
các bác ơi, cho em hỏi chút, có phải I2C là nhất thiết phải dùng ngắt ko ạ?
ko biết là có bác nào từng nghiên cứu vấn đề này chưa, nhưng mình thấy là dùng lệnh while đi kèm lệnh điều kiện thì chức năng cũng có thể gần giống ngắt, ví dụ như chương trình này, (mình làm ko thành công, nên thuật giải cũng ko chắc chắn đúng) <code>//chuong trinh cho slave #include <16f877a.h> #include <def_877a.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock= 4000000) #use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, address=0x10) int8 data, state; #define slave 0x10 void main() { data=0; trisd=0; while(1) { state= i2c_isr_state(); switch (state) { case 0x80: { data++; if( data==255 ) { data= 0; } i2c_write(data); break; } case 0x81: i2c_write(slave); break; } portd= data; } }</code> |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|