在定入单字节中为什么是for(i=0;i<8;i++)
{
sck=0;
sda=dat&0x01;//取出dat的第0位数据写入1302 数据由低位开始传
dat=dat>>1;
sck=1;
}这个时候的SDA是怎么样放的,为什么是与上0X01呢?而读出单字节的for(i=0;i<8;i++)
{
value=value>>1;
sck=0;
if(sda)
value=value|0x80; //将1取出,写在dat的最高位
sck=1;
}这里又是为什么呀?写入读出后的SDA是高位到低位还是低位到高位,
求个详细的解释呀,,,,越细越好呀
此帖出自
小平头技术问答
首先你要明白在这里是串行读写,一个时间内对于SDA来说只可能是高或低电平,对于写字节来说比如我要写一个01010011,我应该怎么办呢?肯定是先写入最后一位1了,我们一看就是1,但是电脑比较sb,他看不出来。。。必须去认为给他处理,既要把01010011的其他位都给干掉,怎么干呢?这个思路有点像IP地址里面子网掩码的作用,就是和0x01与,与过之后除了最后一位保留原来的的值其他都被干成0了,这个是我们想要的结果。。。。与之后对于任何一个数来说都已有两个值0x00和0x01,然后就对了。。。。。
至于读其实写理解了,读就简单了,楼主自己想一下撒, 有不懂的再来和大家探讨撒。。。
一周热门 更多>