找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

ds18b20驱动的疑惑!高手请指点,谢谢

[复制链接]
admin 发表于 2012-9-2 22:36:36 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
一下是驱动中读和写的代码,我不明白在两个函数里为什么dat>>=1出现的地方不一样?读字节时,为什么还没读数据,就先移位?而写字节时,却是先写入,再移位?望大家指点,是不是我时序图哪里不理解导致了这样的困惑?



// 函数名称 :uchar ReadOneChar(void)
// 函数功能 :DS18B20读字节函数
// 入口参数 :无
// 出口参数 :dat 读回的字节数据
//=================================================================
uchar ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
** dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
//=================================================================
// 函数名称 :void WriteOneChar(uchar dat)
// 函数功能 :DS18B20写字节函数
// 入口参数 :dat 要写入的字节数据
// 出口参数 :无
//=================================================================
void WriteOneChar(uchar dat)
{
uchar i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay(5);
DQ = 1;
** dat>>=1;
}
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-29 12:54 , Processed in 0.049838 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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