SETB RELAY ;继电器关闭
CALL BEEP_BL
RET
CHULI2:
MOV DPTR,#BJ4
CALL TEMP_BJ3
CALL BEEP_BL
RET
;-----------------------------------------
TEMP_BJ3:
MOV A,#0CEH
CALL WCOM
MOV R1,#0
MOV R0,#2
BBJJ3: MOV A,R1
MOVC A,@A+DPTR
CALL WDATA
INC R1
DJNZ R0,BBJJ3
RET
BJ3:
DB ">H"
BJ4:
DB "<L"
BJ5:
DB " !"
;==================================================
;显示温度标记子程序
;==================================================
TEMP_BJ:
MOV A,#0CBH
CALL WCOM
MOV DPTR,#BJ1 ;指针指到显示消息
MOV R1,#0
MOV R0,#2
BBJJ1: MOV A,R1
MOVC A,@A+DPTR
CALL WDATA
INC R1
DJNZ R0,BBJJ1
RET
BJ1:
DB 00H,"C"
;=================================================
MENU_OK:
MOV DPTR,#M_OK1 ;指针指到显示消息
MOV A,#1 ;显示在第一行
CALL LCD_PRINT
MOV DPTR,#M_OK2 ;指针指到显示消息
MOV A,#2 ;显示在第一行
CALL LCD_PRINT
RET
M_OK1:
DB " DS18B20 OK ",0
M_OK2:
DB " TEMP: ",0
;-----------------------------------------------
MENU_ERROR:
MOV DPTR,#M_ERROR1 ;指针指到显示消息1
MOV A,#1 ;显示在第一行
CALL LCD_PRINT
MOV DPTR,#M_ERROR2 ;指针指到显示消息1
MOV A,#2 ;显示在第一行
CALL LCD_PRINT
RET
M_ERROR1:
DB " DS18B20 ERROR ",0
M_ERROR2:
DB " TEMP: ---- ",0
;====================================================
reset: setb date_line
nop
clr date_line
MOV r0,#6bh ;主机发出延时复位低脉冲
MOV r1,#04h
tsr1: djnz r0,$
MOV r0,#6bh
djnz r1,tsr1
setb date_line ;然后拉高数据线
nop
nop
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
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
本文关键字:程序 51单片机,单片机-工控设备 - 51单片机