/*******************************************
函数名称:Read1Byte
功 能:从DS1302读出1个字节的数据
参 数:无
返回值 :读出的一个字节数据
********************************************/
uchar Read1Byte(void)
{
uchar i;
uchar rdata = 0X00;
DS_SDA_IN; //SDA对应的IO设置为输入状态
DS_RST1; //REST=1
for(i = 8; i > 0; i--)
{
DS_SCL1;
delay(10);
DS_SCL0;
delay(10);
rdata >>= 1;
if(DS_SDA_BIT) rdata |= 0x80;
}
return(rdata);
}
上述为MSP430F149的官方例程,功能是从DS1302中读出1个字节的数据。通过将程序与时序对比,发现加红的两句代码是不是出错了?为什么移位之后还要将数据与0x80相或呢?这样做不就会改变读取的数据吗?430小白一个,麻烦各位大侠指点一下,小弟不胜感激。