sbit Dout = P2^8; // Dout 是外部输入给单片机的数据,AD芯片转换的结果24位串行
sbit CLK = P2^7; //clk是单片机发给AD芯片的时钟,25个时钟为一次转换周期
unsigned long ReadCount(void){
unsigned long Count;
unsigned char i;
Dout=1; //非51 类MCU,略去此行
CLK=0;
Count=0;
while(Dout); //如果输出数据为高电平,则发25个转换脉冲
for (i=0;i<24;i++)
{
CLK=1; //高电平
Count=Count<<1; //每个高电平到低电平的下降沿来时,变量count左移一位,右侧补零
CLK=0; //低电平
if(Dout) Count++; // 如果输出仍为高电平,那么count加1.
}
CLK=1;
Count=Count^0x800000; //第25个脉冲下降沿来时,转化数据。Count与0x800000按位做xor运算。
CLK=0;
return(Count);
}
-------------------
上面程序的if(Dout) Count++; 看不懂;
Count=Count^0x800000; 也看不懂;
请帮我分析一下,谢谢了先。
感谢yrp88;第一句你的解释很在理,第二句里不是与运算,是异或运算。