nop
         mov r0,#32h
 tsr2:   jnb date_line,tsr3   ;等待DS18B20回应
         djnz r0,tsr2
         jmp tsr4             ; 延时
 tsr3:   setb flag1           ; 置标志位,表示DS1820存在
         jmp tsr5
 tsr4:   clr flag1            ; 清标志位,表示DS1820不存在
         jmp tsr7
 tsr5:   mov r0,#06bh
 tsr6:   djnz r0,$            ; 时序要求延时一段时间
 tsr7:   setb date_line
         ret
 ;=======================================================
 RE_18B20:
         JB  FLAG1,RE_18B20A
         RET
 RE_18B20A:
         CALL  RESET
         MOV  A,#0CCH       ;跳过ROM匹配
         LCALL  WRITE
         MOV  A,#4EH        ;写暂存寄存器
         LCALL  WRITE
         MOV  A,TEMP_TH     ;TH(报警上限)
         LCALL  WRITE
         MOV  A,TEMP_TL     ;TL(报警下限)
         LCALL  WRITE
         MOV  A,#7FH        ;12位精确度
         LCALL  WRITE
         RET
 ;------------------------------------------------------------
 WRITE_E2:
         CALL  RESET
         MOV  A,#0CCH        ;跳过ROM匹配
         LCALL  WRITE
         MOV  A,#48H         ;把暂存器里的温度报警值拷贝到EEROM
         LCALL  WRITE
         RET
 ;--------------------------------------------------------------
 READ_E2:
         CALL  RESET
         MOV  A,#0CCH        ;跳过ROM匹配
   &nb
基于80C51的温湿度控制系统.(十二)相关范文

