初始化DS 1820的子程序:
INIT:
L0:MOV P1,#OOH
MOV R2,#5
L1:MOV R1,#125 ;总线为低复位电平
L2:DJNZ R 1,L2
DJNZ R2,L 1 ;总线复位电平保持125X5=625 u s
MOV P1,#OFFH ;释放DS 1820总线
MOV R2,#63
L3:DJNZ R2,L3 ;释放DS 1820总线等待63 u s
MOV R3,#41 ;监测存在脉冲41 X 10 u s
L4:MOV C,P1.5
JNC L6 ;监测到存在脉冲,跳转至延时420 u s
DEC R3
MOV A,R3
JZ L5 ;接收到存在脉冲吗?不存在重新来
SJMP L4 ;继续监测存在脉冲
L5:SJMP L0
L6:MOV R1,#3 ;延时630 u s
L7:MOV R6,#210
L8:DJNZ R6,L8
DJNZ R1,L7
MOV P1,#OFFH ;初始化完成释放总线
RET ;退出初始化子程序
主机写时序时的子程序:
注:取A寄存器内的8位数据,写入总线
WRITE:
MOV R3,#8 ;写入DS 1820的bit数,一个字节8个bit
WRl:RRC A ;把一个字节分成8个bit环移给C
CLR P1.5 ;主机开始传输数据,总线要处于低电平状态
MOV R4,#10 ;总线保持低电位l0 u s
WR2:DJNZ R4,WR2
JC WR5 ;对当前数据位进行判断,是写‘0’还是写‘1’
CLR P1.5 ;writer‘0’
MOV R2,#50 ;writer ‘0’延时55 p s,由DS1820取样
WR3:DJNZ R2,WR3
MOV P1,#OFFH ;总线释放101, s
MOV R5,#10
WR4:DJNZ R5,WR4
DJNZ R3,WR1 ;泻入下一个bit
SJMP WR7 ;全写完转入退出
WR5:SETB P1.5 ;writer ‘1’ ,DS1820总线释放
MOV R2,#55
WR6:DJNZ R2,WR6 ;等待551, s,DS 1820取样
DJNZ R3,WR 1 ;写入下一个bit
WR7:MOV P1,#OFFH
MOV R5,#5
WR8:DJNZ R5,WR8
RET ;退出WRITE子程序
主机读时序时的子程序:
注:一读总线上传输的8位数据,结果存
首页 上一页 3 4 5 6 7 8 下一页 尾页 6/8/8
免费资料文档--基于单片机的温度监测系统(六)由毕业论文网(www.huoyuandh.com)会员上传。