刚开始学习MSP430单片机,参考网上修改的程序, DS18B20总是初始化失败,端口读入的值总是FFFF。延时用示波器测的,满足500,改为600US也不好用,请教各位达人,可能是什么原因,谢谢。
/***************DS18B20 Reset&Init*********************/
void Reset_18B20(void)
{
int zxc;
P4DIR|=0x01 ;
OUT_0;//Set output 0 主机首先发出一个480-960微秒的低电平脉冲
DelayNus(70); //500us
OUT_1; //释放数据线(将数据线拉高)
DelayNus(10); //90us
P4DIR&=~BIT0; //BIT0=0X01 P4.0=input
zxc=P4IN;
if((P4IN&BIT0)==BIT0)
{ Err_Flag=1; } //失败,一直都是高电平说明总线上无器件应答
else
{
Err_Flag=0; // 有低电平出现说明总线上有器件已做出应答
OUT_1;
}
P4DIR|=BIT0 ; //BIT0=0X01 P4.0=output
}
[
本帖最后由 黑加仑 于 2011-6-17 09:54 编辑 ]
此帖出自
小平头技术问答
我接在P4.0口了,他不是没中断功能吗。 我用示波器侧过我的延时,当DelayNus(50);就是500US, 现在是我读的时序有问题吗?
在读数据时候,如果我只拉低后不释放,就一直读入的是0000,那是说明我的端口影响数据的输入吗?
[ 本帖最后由 黑加仑 于 2011-6-18 10:25 编辑 ]一周热门 更多>