请问下面的单片机ds1302的编程是什么意思啊?dat>>=1; 和 dat|=0x80; 这步是什么回事?

/*****************************************************
函数功能:从1302读一个字节数据
入口参数:x
***************************************************/
unsigned char Read1302(void)
{
unsigned char i,dat;
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i<8;i++) //连续读8个二进制位数据
{
dat>>=1; //将dat的各数据位右移1位,因为先读出的是字节的最低位
if(DATA==1) //如果读出的数据是1
dat|=0x80; //将1取出,写在dat的最高位
SCLK=1; //将SCLK置于高电平,为下降沿读出
delaynus(2); //稍微等待
SCLK=0; //拉低SCLK,形成脉冲下降沿
delaynus(2); //稍微等待
}
return dat; //将读出的数据返回
}

dat>>=1;其实就是dat=dat>>1; 意思就是dat的值右移一位,再存入dat
而dat|=0x80; 等价于 dat = dat | 0x80;,意思就是dat 的最高位写1,而其他七位不变。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-08
这这些是驱动直接用就行
相似回答