EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于DS18B20单总线如何区分时钟还是数据和uint延时问题2 d8 {: t& A& k/ S* T1 Q; M" \, J; x$ B
/ g6 f1 W. T6 O/ n
* e y& G. V! N% a$ z
我用的是普中科技的实验程序 先声明一下..2 x$ A' B, L5 s: ^: F0 C
接下来是读字节循环里的一部分我给提出来了
9 R' T$ y2 l5 U4 i
1 X+ Y5 x4 l+ q# x0 N4 ~( \其中DSPORT是传感器管脚. @7 T9 E/ s9 A$ U ?( [
DSPORT = 0; q7 C2 I5 f) D
DSPORT = 1;
: l3 a! Z2 C5 o; _8 b* E5 xi++;
0 f% w& M2 M& z/ j: di++;//延时6us等待数据稳定8 W/ c5 I# M+ v2 X3 D
bi = DSPORT; //读取数据,从最低位开始读取
j$ k7 g5 B( m- X% f u4 R+ U, l! c: o
+ S3 C# l& {5 [$ C* Q
先拉低 再拉高 读数据. 可是这和IIC不一样。前几天看得IIC有SDA和SCL两根线& r7 u- \/ x* h/ T. X% O
但是这个只有一个根线..它是咋识别的 是说如果赋值的话就是数据内容 被赋值+ F0 C- S7 u. F5 T
就改变的是时钟??
) L) P9 n7 J2 T另一个问题是
3 M1 u d5 ?$ F) ~# b比如我现在有一个 uint i;
5 v9 d( S5 }* s' ?, h. r; ?我执行while(i--);
+ V) ^$ q2 y! J# L7 N" a' A我进行调试发现它每次需要花9us才执行一次i--5 ?, k4 u# s! ~1 {/ K$ q/ I$ g; D- }
就算是算上判断 我感觉还是很多啊5 E' H3 E0 ?2 d/ g
因为一个指令周期不应该是1-4us么?0 A) c! O' t2 T) Y `
而且这种不应该是比较低级的么... 还是有什么别的因素?
, Q, R: _, ~' S1 Q, k. j晶振就是普通的12M..+ H" k _' I# W3 ~1 ?
求教..谢谢大家。
6 K) w/ h# R1 ?' i$ c( _# U9 D |