void Write1302(uint8_t addr,uint8_t data) { DS1302_OUT(); DS1302_RST_L(); DS1302_CLK_L(); DS1302_RST_H(); delay_nus(4); DS1302SendByte(addr); DS1302SendByte(data); delay_nus(4); DS1302_CLK_H(); DS1302_RST_L(); }
uint8_t DS1302ReceiveByte(void) { uint8_t i,byte=0; delay_nus(2); for(i=0x01;i;i<<=1) { if(DS1302_IN_X) byte |= i; DS1302_CLK_H(); delay_nus(2); DS1302_CLK_L(); delay_nus(2); } return(byte); }
u8 DS1302ReceiveByte(void) { u8 i,byte=0; for(i=0x01;i;i<<=1) { if(DS1302_IN_X) byte |= i; DS1302_CLK_L(); DelayNOP(80); //加延时 DS1302_CLK_H(); NOP();NOP(); //加延时 } return(byte>>1); }
void DS1302SendByte(u8 byte) { u8 i; for(i=0x01;i;i<<=1) { if(byte&i) DS1302_OUT_H(); else DS1302_OUT_L(); DS1302_CLK_H(); DelayNOP(80); //加延时 DS1302_CLK_L(); NOP();NOP(); //加延时 } }
void DS1302SendByte(uint8_t byte) { uint8_t i; DS1302_CLK_L(); //拉低SCLK,为脉冲上升沿写入数据做好准备 delay_nus(2); //稍微等待,使硬件做好准备 for(i=0x01;i;i<<=1) { if(byte&i) DS1302_OUT_H(); else DS1302_OUT_L(); delay_nus(2); DS1302_CLK_H(); delay_nus(2); DS1302_CLK_L(); } }
uint8_t Read1302(uint8_t addr) { uint8_t data=0; DS1302_OUT(); DS1302_RST_L(); DS1302_CLK_L(); DS1302_RST_H(); delay_nus(4); DS1302SendByte(addr|0x01); DS1302_IN(); delay_nus(4); data = DS1302ReceiveByte(); delay_nus(4); DS1302_CLK_H(); DS1302_RST_L(); return(data); }