找回密码
 注册
关于网站域名变更的通知
查看: 807|回复: 6
打印 上一主题 下一主题

问个问题:关于DS18B20单总线如何区分时钟还是数据和uint延时问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-28 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2019-3-28 14:18 | 只看该作者
这个看你单片机的性能了,有的1T的,有的不是

该用户从未签到

3#
发表于 2019-3-28 14:24 | 只看该作者
如果你要精确的计算时间的话你要去看汇编代码,因为我们的代码都会转换为汇编,然而汇编是对寄存器的操作,我们不知道它是如何通过汇编来实现while(i--)这个操作的。

该用户从未签到

4#
发表于 2019-3-28 14:34 | 只看该作者
DS18B20是单总线,是一种与IIC不同的总线方式,是两个不同规范的总线协议。
3 d8 C$ r; r4 \1 r  Z+ s, G" v2 S指令周期会根据数据类型的不同而消耗不同的执行时间,uint是16位数据,如果是8位单片机的话,需要进行两次减法运算,才算完成一次16位数的减法,而用uchar的话,8位数据,只需要做一次减法运算就可以了。
) z7 W  E9 b. \/ ^# H你可以试试再定义一个uchar,对比一下两种数据类型的运行时间。

点评

我当时自己试的时候的确是uchar快很多.原来是这样 thanks  详情 回复 发表于 2019-3-28 14:40

该用户从未签到

5#
 楼主| 发表于 2019-3-28 14:40 | 只看该作者
relchhiclty 发表于 2019-3-28 14:340 v+ T1 ?2 R" `6 @% O
DS18B20是单总线,是一种与IIC不同的总线方式,是两个不同规范的总线协议。! k) g" F: G$ o! n1 P
指令周期会根据数据类型的不同 ...

2 B1 x3 s( C- E6 J6 c! r我当时自己试的时候的确是uchar快很多.原来是这样 thanks9 I8 b5 p/ W/ w

该用户从未签到

6#
发表于 2019-3-28 14:47 | 只看该作者
DS18B20是单总线通讯器件。单总线不需要时钟线
3 ^+ C0 V5 `0 ^2 ~1 w) B它的同步方式是这样的,主机拉低总线并释放,从机接手总线,开始发送数据,数据以低电平+高电平组成一个位,低电平的持续时间判断是位1还是位0。) N7 [# e3 b$ e( s5 N9 E" ]5 P
指令执行速度的问题,得看那句C语言被编译器编译出几句汇编语句。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-12 05:10 , Processed in 0.140625 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表