IMG_0477.JPG (5.58 MB, 下載次數: 47)
下載附件
效果展示
2019-7-27 18:34 上傳
- #include<global.h>
- void DS3231WriteByte(unsigned char addr,unsigned char dat)
- {
- bit ack;
- IICStart();
- ack = IICWrite(0xD0);//寫設備地址+寫操作
- while(~ack);
- ack = IICWrite(addr);//內部寄存器指針
- while(~ack);
- ack = IICWrite(dat);//寫數據
- while(~ack);
- IICStop();
- }
- void DS3231ReadByte(unsigned char addr,unsigned char *buf)
- {
- bit ack;
- IICStart();
- ack = IICWrite(0xD0);//寫設備地址+寫操作
- while(~ack);
- ack = IICWrite(addr);//內部寄存器指針
- while(~ack);
- IICStop();
-
- IICStart();
- ack = IICWrite(0xD1);//寫設備地址+讀操作
- while(~ack);
- *buf = IICReadNAK();//讀一個字節數據
- IICStop();
- }
- void DS3231Read7Byte(unsigned char *buf)
- {
- bit ack;
- unsigned char i;
- IICStart();
- ack = IICWrite(0xD0);//寫設備地址+寫操作
- while(~ack);
- ack = IICWrite(0x00);//秒寄存器地址
- while(~ack);
- IICStop();
-
- IICStart();
- ack = IICWrite(0xD1);//寫設備地址+讀操作
- while(~ack);
- for(i=0;i<6;i++)
- { //上面寫了秒寄存器地址,內部寄存器指針會自動+1
- *buf++= IICReadACK();//所以只需要發送一個開始地址
- } //讀數據,發送還需要讀數據的應答位
- *buf= IICReadNAK();//讀數據,不需要再讀取數據應答位
- IICStop();
-
- }
- void DS3231Write7Byte(unsigned char *dat)
- {
- bit ack;
- unsigned char i;
- IICStart();
- ack = IICWrite(0xD0);//寫設備地址+寫操作
- while(~ack);
- ack = IICWrite(0x00);//秒寄存器地址
- while(~ack);
- for(i=0;i<7;i++)
- {
- ack = IICWrite(dat[i]);//連續寫入數據7次,和上面同理
- while(~ack);
- }
- IICStop();
- }
- void GetRealTime(struct sTime *time)
- {
- unsigned char buf[8];
-
- DS3231Read7Byte(buf);
- time->year = buf[6];
- time->mon = buf[5];
- time->day = buf[4];
- time->hour = buf[2];
- time->min = buf[1];
- time->sec = buf[0];
- time->week = buf[3];
- }
復制代碼
全部資料51hei下載地址:
ds3231.rar
(58.74 KB, 下載次數: 79)
2019-7-27 18:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|