mày mò mãi, tìm trên mấy cái diễn đàn cuối cùng cũng mìnn cũng viết được. ở 2 đoạn chương trinh con đọc và ghi dữ liệu cần thêm điều kiên DS1307 đã sẵn sàng bằng cách chèn thêm đoạn code sau
int1 ready_DS1307(void) {
int1 ack;
i2c_start();
ack = i2c_write(0xD0);
i2c_stop();
delay_us(5);
return !ack;
}
và trước mỗi ct con ta thêm vầo câu lệnh while(!ready_DS1307()) {;} là được
ví dụ ở đoạn ct con ghi dữ liệu:
void write(int8 value, int8 add)
{
while(!ready_DS1307()) {;}
i2c_start();
i2c_write(0xD0);
i2c_write(add);
i2c_write(value);
i2c_stop();
}
với đoạn code như trên thì mình đã đọc và ghi dữ liệu cho con ds1307 được rồi.
Tuy nhiên đoạn ct ready_DS1307() la mình copy trên diễn đàn nên mình vẫn ko hiểu lắm. Ai hiểu đoạn code trên làm ơn giải thích giùm mình với.
|