第一点:写时序 写0,写1可以分开操作,但是也是可以统一编程的,如何统一; 我们先看写时序, 1.主设备先拉低数据线,左(写0)右(写1)是一致的; 2.15us内出现分歧,分歧出现在写1,波形出现了变化,此时要看写1; 3.写1在15us内被电阻上拉导致波形变化了,说明了什么呢,数据的变化导致了数据线上的波形未能维持原状,数据这时候可以传输了(可能数据线此时被释放,这里可以大家自行测试,本人测试是此时释放的数据线,注意延时不能过长,本人加延时出错,不加延时现象正确) 所以这部分应该这样编程: 定义数据线是DQ; DQ = 0; delayus(2);//看写1时序,主设备拉低要有1us,这段时间写0和写1一致 DQ = (bit)data; 取发送数据低1位发送到数据线(DQ) 写0和写1都要至少60us延时, 此时主设备释放数据线 DQ = 1;//看写0时序 在来3us才进行下一位数据传输 重复8次一循环发送一字节数据
|