熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2019-7-23 16:00
正文摘要:DS3231讀時(shí)間寄存器給定寄存器首地址后是否可以依次讀0x00秒, 0x01分,0x02時(shí),0x03天,.....還是只能讀出給定寄存器的數(shù)據(jù)。 |
accumulation 發(fā)表于 2019-7-27 10:53 明白了,謝謝朋友解疑 |
地址指針是自動(dòng)加1的,比如說 0iic開始 1寫操作 2寫地址sec 0x00 3寫入數(shù)據(jù) sex 4再次寫數(shù)據(jù) 這里寫入數(shù)據(jù)就是寫到min寄存器0x01; 5iic結(jié)束 所以時(shí)間初始化是可以一次性寫完的 |
這段程序讀出寄存器數(shù)據(jù)沒有問題,但是我想可不可以依次從首地址連續(xù)讀出數(shù)據(jù)直到主機(jī)發(fā)出NACK 信號(hào)結(jié)束。還想請(qǐng)教一下大家 uchar date[7]; /* date[2]=hour,date[1]=minute,date[0]=second*/ uchar read_ds3231(uchar address) //從DS3231的某個(gè)地址讀取1byte數(shù)據(jù) { uchar dat; uchar n; start(); write_i2c(0xd0); while(!respons()); write_i2c(0x00); // 寫秒寄存器地址 while(!respons()); start(); write_i2c(0xd1); while(!respons()); date[0]=read_i2c(); stop(); delay();delay();delay();delay(); start(); write_i2c(0xd0); while(!respons()); write_i2c(0x01); // 寫分寄存器地址 while(!respons()); start(); write_i2c(0xd1); while(!respons()); date[1]=read_i2c(); stop(); delay();delay();delay();delay(); start(); write_i2c(0xd0); while(!respons()); write_i2c(0x02); //寫小時(shí)寄存器地址 while(!respons()); start(); write_i2c(0xd1); while(!respons()); date[2]=read_i2c(); stop(); } |
Powered by 單片機(jī)教程網(wǎng)