EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于DS18B20单总线如何区分时钟还是数据和uint延时问题
' {4 H% E$ y5 e& p9 e5 d) i" L1 f( E( p3 c# E. I1 k3 f
* n) p) {7 U k我用的是普中科技的实验程序 先声明一下..) \3 J% H6 V5 X9 i0 j" M
接下来是读字节循环里的一部分我给提出来了
. z: e8 F; T- l! r% U7 e
5 M+ [+ f" x V其中DSPORT是传感器管脚
, t; W) V4 h; x g/ P+ f0 C) YDSPORT = 0;
' g' v6 ]( |3 GDSPORT = 1;
* h9 s) h( g6 G' z+ f1 k1 ?i++;
% y2 \7 u- {# L" K" {8 ~i++;//延时6us等待数据稳定
6 c2 v: J# H' p3 dbi = DSPORT; //读取数据,从最低位开始读取- D$ L4 k. s4 ?
# M V, X2 W6 W$ r1 h
: U5 X0 v, w& z! h) A3 l/ E% }" J) t/ C先拉低 再拉高 读数据. 可是这和IIC不一样。前几天看得IIC有SDA和SCL两根线9 M9 _% V! V3 R7 d( M
但是这个只有一个根线..它是咋识别的 是说如果赋值的话就是数据内容 被赋值0 Y9 w" a5 k5 b" w7 Q; y8 Y
就改变的是时钟?? * u2 V* S+ T7 }' a
另一个问题是
& k6 ~# _& X$ i, L, |0 ?- Y+ J比如我现在有一个 uint i;
2 m8 X! ?7 g' A1 ^我执行while(i--);
2 [7 I* S$ |7 u/ N$ ~我进行调试发现它每次需要花9us才执行一次i--
, L; B- s* N8 W; s. W就算是算上判断 我感觉还是很多啊; ^& `- T" o1 h& U) j! x U
因为一个指令周期不应该是1-4us么?
# L* j0 H! B3 v. H/ V1 F而且这种不应该是比较低级的么... 还是有什么别的因素?# L1 f" e5 H0 X" [. p
晶振就是普通的12M..
: |; O; |5 ^1 n% G5 L2 l1 ]求教..谢谢大家。
! r6 W* o- d& y" [4 B6 w |