本帖最后由 konglingfei0615 于 2013-8-3 10:09 编辑
最近看DS18B20,发现读时序与程序对应不起来,到底怎么看?
#include <msp430x14x.h>
#define DQ1 P1OUT |= BIT7
#define DQ0 P1OUT &= ~BIT7
#define DQOUT P1DIR |= BIT7
#define DQIN P1DIR &= ~BIT7
/*******************************************
函数名称:Read_Byte
功 能:从DS18B20中读出1字节数据
参 数:无
返回值 :temp
********************************************/
uchar Read_Byte()
{
uchar i,temp;
for(i=0;i<8;i++)
{
DQOUT;//主机输出状态
temp >>= 1;//8位依次接收
DQ0;//低电平至少1us
Delayus(6);
DQ1; //这边为什么要置高电平,时序中没有啊????
Delayus(8);
DQIN;//主机接收状态,采样总线
if(P1IN & BIT7)//总线为1
{
temp |= 0x80;
}
Delayus(45);
DQOUT;//主机切换为输出状态
DQ1;//切换为高电平空闲状态
Delayus(10);
}
return temp;
}
|