Exemple #1
0
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();
}
Exemple #2
0
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();		//加延时
	}
}
Exemple #5
0
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();
	}
}
Exemple #6
0
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);
}