![]() |
|
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: Sep 2010
Bài gửi: 17
: |
Giao tiếp I2C
Chào các bạn. Tôi muốn hỏi về giao tiếp I2C viết bằng HTpic cho pic18f2550 Thạch anh 24MHz
Chương trình cho master: Code:
void I2Cinit(void) { SSPSTAT|=0xC0; SSPCON1=0x28;//master SSPCON2=0x00; SSPADD=59;//100KHz } void I2Cwrite(int data,int addr) { SEN=1; while(SEN){} while(ACKSTAT){}//chờ ACK SSPBUF=(addr<<1)|0;//addr=4 while(ACKSTAT||BF){} SSPBUF=data; while(ACKSTAT){} PEN=1; while(PEN){} I2Cinit(); } Code:
void I2Cinit(void) { SSPSTAT|=0xC0; SSPCON1=0x36;//slave không ngắt startstop SSPCON2=0x00; SSPADD=(4<<1)|0;//addr=4 SSPIE=1; SSPIF=0; } khi chạy thử mô phỏng thì proteus hiện ra như file đính kém, tại xung thứ 9 không có xung ack, vậy là tôi đã định sai địa chỉ hay do lỗi gì vì tối đọc thấy rằng phần cứng sẽ tự động gửi xung ack khi thấy đúng địa chỉ Thanks |
![]() |
![]() |
|
|