DS1302显示全是84
时间:10-02
整理:3721RD
点击:
读写函数有什么问题?
void WriDS1302(unsigned char cmd, unsigned char dat) //ucAddr: DS1302μ??·, ucData: òaD′μ?êy?Y
{
unsigned char i;
DS1302RST_0;delay_us(1);
DS1302RST_1;
for(i=0; i<8; i++)
{
if(cmd&0x01)
DS1302IO_1;
else DS1302IO_0;
cmd=cmd>>1;
DS1302CLK_1;
delay_us(1);
DS1302CLK_0;
}
for(i=0; i<8; i++)
{
if(dat&0x01)
DS1302IO_1;
else DS1302IO_0;
dat=dat>>1;
DS1302CLK_1;
delay_us(1);
DS1302CLK_0;
}
DS1302RST_0;
DS1302CLK_1;
}
//*********************************************
unsigned char ReadDS1302(unsigned char cmd) //?áè?DS1302?3μ??·μ?êy?Y
{
unsigned char i,tem=0;
DS1302RST_0;
delay_us(1);
DS1302CLK_0;
delay_us(1);
DS1302RST_1;
for(i=0; i<8; i++)
{
if(cmd&0x01)
DS1302IO_1;
else DS1302IO_0;
cmd=cmd>>1;
DS1302CLK_1;
delay_us(1);
DS1302CLK_0;
}
for(i=8; i>0; i--)
{
if(PAin(1))
tem=tem|0x01;
else;
tem=(tem<<1);
DS1302CLK_1;
delay_us(1);
DS1302CLK_0;
}
DS1302RST_0;
DS1302CLK_1;
return(tem);
}
void WriDS1302(unsigned char cmd, unsigned char dat) //ucAddr: DS1302μ??·, ucData: òaD′μ?êy?Y
{
unsigned char i;
DS1302RST_0;delay_us(1);
DS1302RST_1;
for(i=0; i<8; i++)
{
if(cmd&0x01)
DS1302IO_1;
else DS1302IO_0;
cmd=cmd>>1;
DS1302CLK_1;
delay_us(1);
DS1302CLK_0;
}
for(i=0; i<8; i++)
{
if(dat&0x01)
DS1302IO_1;
else DS1302IO_0;
dat=dat>>1;
DS1302CLK_1;
delay_us(1);
DS1302CLK_0;
}
DS1302RST_0;
DS1302CLK_1;
}
//*********************************************
unsigned char ReadDS1302(unsigned char cmd) //?áè?DS1302?3μ??·μ?êy?Y
{
unsigned char i,tem=0;
DS1302RST_0;
delay_us(1);
DS1302CLK_0;
delay_us(1);
DS1302RST_1;
for(i=0; i<8; i++)
{
if(cmd&0x01)
DS1302IO_1;
else DS1302IO_0;
cmd=cmd>>1;
DS1302CLK_1;
delay_us(1);
DS1302CLK_0;
}
for(i=8; i>0; i--)
{
if(PAin(1))
tem=tem|0x01;
else;
tem=(tem<<1);
DS1302CLK_1;
delay_us(1);
DS1302CLK_0;
}
DS1302RST_0;
DS1302CLK_1;
return(tem);
}
你这个代码看着就头大 会不会是时序问题呢
+1 程序又长又乱,(主要自己学的也马马虎虎,不敢误人子弟。)
和呵呵呵呵呵呵