void SendByte_DS1302(char SendData)
{
char clkserialbyte=7;
RTC_SCLK=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
do
{
if(SendData&0x01)
RTC_IO=HIGH;
else
RTC_IO=LOW;
SendData=SendData>>1;
RTC_SCLK=HIGH;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_SCLK=LOW;
}while(clkserialbyte--); /* 发送一字节*/
}
/*---------------------------------------------------------- */
RecByte_DS1302()
{
char clkserialbyte=7;
char ReadData=0;
RTC_SCLK=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
do
{
ReadData=ReadData>>1;
if(RTC_IO==1)
RTC_SCLK=HIGH;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_SCLK=LOW;
}while(clkserialbyte--); // 接收一字节
return(ReadData);
}
char Read_DS1302(char clk_command)
{
_DINT();
RTC_CS=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_SCLK=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
SendByte_DS1302(clk_command);
clk_command=RecByte_DS1302();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_CS=HIGH;
return(clk_command);
}
void Write_DS1302(char clk_command,char clk_data)
{
_DINT();
RTC_CS=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_SCLK=LOW;
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
SendByte_DS1302(clk_command);
SendByte_DS1302(clk_data);
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
RTC_CS=HIGH;
}
// 初始化DS1302芯片
void IniDS1302()
{
Write_DS1302(CmdWrControl,0); /* 打开写保护*/
Write_DS1302(CmdWrSec,0); /* 打开晶振*/
}