关于51单片机 DS1302时钟编程问题
这是往DS1302写入一个字节的程序://**************读取一字节()*************************ucharDS1302_Output...
这是往DS1302写入一个字节的程序:
//**************读取一字节()*************************
uchar DS1302_Output_Byte(void) //从时钟IC读取一字节()
{
uchar i;
for(i=8; i>0; i--)
{
ACC>>=1; T_DIO= 1;
ACC_7 = T_DIO;
T_SCLK = 1; //相当于汇编中的 RRC
T_SCLK = 0;
}
return(ACC);
}
想问下
ACC>>=1; T_DIO= 1;
ACC_7 = T_DIO;
这句话是什么意思啊?这么做的目的没看懂 展开
//**************读取一字节()*************************
uchar DS1302_Output_Byte(void) //从时钟IC读取一字节()
{
uchar i;
for(i=8; i>0; i--)
{
ACC>>=1; T_DIO= 1;
ACC_7 = T_DIO;
T_SCLK = 1; //相当于汇编中的 RRC
T_SCLK = 0;
}
return(ACC);
}
想问下
ACC>>=1; T_DIO= 1;
ACC_7 = T_DIO;
这句话是什么意思啊?这么做的目的没看懂 展开
2个回答
展开全部
ACC是个特殊寄存器,在reg52.h里有声明
通常用来存放数据移位运算。
ACC>>=1; //这里就是将ACC里的数据右移并赋值给自己,举例0xff也就是1111 1111经过右移1位计算,得到0111 1111
ACC_7 应该在最开始的时候定义过,也就是sbit ACC_7=ACC^7;
ACC_7代表ACC的最高位,也就是第刚才举例中右移一次得到0的那个位
而T_DIO应该是bit类型的,所以,赋值给ACC_7
也就是说ACC 0111 1111最高位被赋值为1,又变成了1111 1111
希望能帮助你
通常用来存放数据移位运算。
ACC>>=1; //这里就是将ACC里的数据右移并赋值给自己,举例0xff也就是1111 1111经过右移1位计算,得到0111 1111
ACC_7 应该在最开始的时候定义过,也就是sbit ACC_7=ACC^7;
ACC_7代表ACC的最高位,也就是第刚才举例中右移一次得到0的那个位
而T_DIO应该是bit类型的,所以,赋值给ACC_7
也就是说ACC 0111 1111最高位被赋值为1,又变成了1111 1111
希望能帮助你
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询