关于DS1302程序问题

2019-07-15 12:07发布

unsigned char Ds1302Read(unsigned char addr)
{
unsigned char n,dat,dat1;
SCLK=0;//先将SCLK置低电平。
_nop_();
RST=1;//然后将RST(CE)置高电平。
_nop_();
for(n=0;n<8;n++)//开始传送八位地址命令
{
DSIO=addr&0x01;//数据从低位开始传送
addr>>=1;
SCLK=1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK=0;//DS1302下降沿时,放置数据
_nop_();
}
_nop_();
for(n=0;n<8;n++)//读取8位数据
{
dat1=DSIO;//从最低位开始接收
dat=(dat>>1)|(dat1<<7);
SCLK =1;
_nop_();
SCLK=0;//DS1302下降沿时,放置数据
_nop_();
}
RST=0;
_nop_();//以下为DS1302复位的稳定时间,必须的。
SCLK=1;
_nop_();
DSIO=0;
_nop_();
DSIO=1;
_nop_();
return dat;
}


DSIO = addr& 0x01 ;//数据从低位开始传送    这句话为什么要加&0x01,不加有什么后果,举例说明下
dat = (dat>>1) | (dat1<<7);
这语句不懂,举例说明下,谢谢了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。