DS1302有关问题求指教

2019-03-24 19:36发布

在定入单字节中为什么是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是高位到低位还是低位到高位,

求个详细的解释呀,,,,越细越好呀 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
小小白
2019-03-25 01:09

           首先你要明白在这里是串行读写,一个时间内对于SDA来说只可能是高或低电平,对于写字节来说比如我要写一个01010011,我应该怎么办呢?肯定是先写入最后一位1了,我们一看就是1,但是电脑比较sb,他看不出来。。。必须去认为给他处理,既要把01010011的其他位都给干掉,怎么干呢?这个思路有点像IP地址里面子网掩码的作用,就是和0x01与,与过之后除了最后一位保留原来的的值其他都被干成0了,这个是我们想要的结果。。。。与之后对于任何一个数来说都已有两个值0x00和0x01,然后就对了。。。。。

        至于读其实写理解了,读就简单了,楼主自己想一下撒, 有不懂的再来和大家探讨撒。。。

 

[ 本帖最后由 小小白 于 2011-11-15 09:43 编辑 ]

一周热门 更多>