📄 ds18b20.txt
字号:
;*****************************************************
; SAMPLE TEMPRATURE PROGRAM BY DS18B20
; 12.000MHZ OR 11.0592MHZ
;*****************************************************
DQ BIT P3.0
FLAG BIT P0.0
;ERR_FLAG BIT 40H
DT1 EQU 30H
DATAL EQU 31H
DATAH EQU 32H
DAT EQU 33H
DT2 EQU 34H
DT3 EQU 35H
;------------------------------------
ORG 0000H
AJMP START
ORG 0100H
START:
LCALL D800MS
LCALL D800MS
LOOP_SAMPLE:
LCALL INITIAL_DS18B20
MOV R7,#0CCH ;WRITE SKIP ROM
LCALL WRITE_CHAR
MOV R7,#44H ;WRITE TEMPRATURE CONVERSION
LCALL WRITE_CHAR
NOP
NOP
LCALL D800MS ;TIME OF DS18B20 TEMPERATURE CONVERSION,IF NO DELAY TIME 800MS,WILL READ 85 DEGREE
;LCALL INITIAL_DS18B20
;MOV R7,#0CCH
;LCALL WRITE_CHAR
;MOV R7,#48H ;COPY
;LCALL WRITE_CHAR
;NOP
;NOP
;NOP
;LCALL D800MS
LCALL INITIAL_DS18B20
MOV R7,#0CCH ;WRITE SKIP ROM
LCALL WRITE_CHAR
MOV R7,#0BEH ;WRITE READ DATA COMMAND
LCALL WRITE_CHAR
LCALL READ_CHAR ;READ FIRST TEMPRATURE DATA
MOV DATAL,DAT
LCALL READ_CHAR ;READ SECOND DATA
MOV DATAH,DAT
;LCALL READ_CHAR
;LCALL READ_CHAR
;LCALL READ_CHAR
;LCALL READ_CHAR
LCALL INITIAL_DS18B20
MOV A,DATAL
SWAP A
ANL A,#0FH
MOV DAT,A
MOV A,DATAH
SWAP A
ANL A,#0F0H
ORL A,DAT
MOV P0,DATAL
LCALL D800MS
;LCALL D800MS
;MOV P0,#00H
LCALL D800MS
LJMP LOOP_SAMPLE
;------------------------------------
INITIAL_DS18B20:
SETB DQ
NOP
NOP
NOP
CLR DQ
MOV R0,#0FAH
LOOP1:DJNZ R0,$ ;delay 500us
MOV R0,#50
LOOP3:DJNZ R0,$
SETB DQ
LOOP2:JB DQ,$
MOV R0,#120
DJNZ R0,$ ;delay 240us
SETB DQ
RET
;------------------------------------
WRITE_CHAR:
MOV R6,#8
CLR C
MOV A,R7
WRITE_BIT:
CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R6,WRITE_BIT
SETB DQ
RET
;------------------------------------
READ_CHAR:
MOV R6,#8
CLR C
READ_BIT:
SETB DQ
NOP
CLR DQ
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R6,READ_BIT
MOV DAT,A
RET
;------------------------------------
D480US:MOV DT1,#245
DJNZ DT1,$
RET
D130US:MOV DT1,#65
DJNZ DT1,$
RET
D60US:MOV DT1,#30
DJNZ DT1,$
RET
D15US:MOV DT1,#5
DJNZ DT1,$
RET
D800MS:MOV DT1,#50
DEL1:MOV DT2,#100
DEL2:MOV DT3,#100
DJNZ DT3,$
DJNZ DT2,DEL2
DJNZ DT1,DEL1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -