小弟初学单片机,最近做一个温度传感器 这是DS18B20的初始化程序
不知道为什么初始化程序 无法检测出温度传感器的存在,也就是程序结束时FLAG始终为0
DQ 为数据线DS的数据线,FLAG=1为DS存在,FLAG=0为DS不存在
;-------------------DS18B20 初始化程序
INIT_1820:
SETB DQ
NOP
CLR DQ
MOV R0,#80H
TSR1:
DJNZ R0,TSR1 ; 延时
SETB DQ
MOV R0,#25H ;96US-25H
TSR2:
DJNZ R0,TSR2
JNB DQ,TSR3
LJMP TSR4 ; 延时
TSR3:
SETB FLAG1 ; DS存在,置标志位
LJMP TSR5
TSR4:
CLR FLAG1 ; DS不存在,清标志位
LJMP TSR7
TSR5:
MOV R0,#06BH ;200US
TSR6:
DJNZ R0,TSR6 ; ÑÓʱ
TSR7:
SETB DQ
RET 你的"DS18B20 初始化程序"初始化程序不太好.单线总线上的所有操作均从初始化开始.过程如下:主机通过拉低单线至少480uS以上,产生复位脉冲,然后释放该总线.释放总线时,会产生一个上升沿,即命令DQ=1.DS18B20检测到该上升沿后,延迟15--60uS,通过拉低总线60--240uS来产生应答脉冲(DS18B20自己发出的).主机接收到该信号后,说明有单线器件在线.于是开始执行ROM操作-->存储器操作-->数据传输-->结束
恩 很不错!!!
不错!!
t
MOV R0,#06BH ;200US
TSR6:
DJNZ R0,TSR6 ; ÑÓʱ
1`1`