DSB操作时序详解.docx
- 文档编号:230315
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:6
- 大小:465.99KB
DSB操作时序详解.docx
《DSB操作时序详解.docx》由会员分享,可在线阅读,更多相关《DSB操作时序详解.docx(6页珍藏版)》请在冰豆网上搜索。
1.DS18B20复位程序分析
单片机发送复位脉冲低电平保持至少480us
释放总线进入接收状态,等待15us-60us
DS18B20发出存在脉冲脉冲持续60-240us
voidreset()
{
uinti;//i定义为uchar型
ds=0;
i=103;
while(i>0)i--;
ds=1;
while(i>0)i--;//在这里不做存在检测
}
2.DS18B20写程序
时序分析:
单片机由高电平拉低至低电平产生写时间隙
15us之后就需要将所需要写的位送到总线上面
DS18B20在开始之后的15-60us内对总线进行采样(注意采样时间)
uintdswrite(uchardat)
{
uchari;
uintj;
sbittempbyte;
for(i=0;i<8;i++)
{
tempbyte=dat&0x01;
dat>>=1;//从最低位开始每一位送到tempbyte临时位
//总线拉低为低电平
if(tempbyte)//写1
{
ds=0;
j++;
j++;//延时个13us
ds=1;
j=8;
while(j>0)j--//延时个71us
}
else
{
ds=0;
j=8;
while(j>0)j--;
ds=1;
j++;j++;//保证大于1us-
}
}
}
3.DS18B20读时序
时序分析
单片机从高电平拉低至低电平
低电平保持4us后将总线拉高产生读时间隙
读时间在4us后到15us之前(注意一定在15us之前)读时间才有效
从拉低总线60us-120us之间释放总线(注意是在这个时间间隙之间,严格按照时序操作)
bittempbit()
{
uintj;
bitdat;
ds=0;
j++;//延时个4us
ds=1;
j++;j++;//仿真结果在8.86us左右
dat=ds;//确保在15us之前
j=8;
while(j>0)j--;
ds=1;
returndat;
}
uchardsread()//用uchar来装读到的数据足够
{
uchari,j,dat;
for(i=0;i<8;i++)
{
j=tempbit();
dat=(j<<7)|(dat>>1);//因为首先读到是低位的数据,后面读的数据加到高位,并依
//此往低位挪动
}
returndat;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSB 操作 时序 详解