📄 18b20.asm
字号:
rscra equ 0beh
rest_n equ 7h
din equ p3.4
covscra equ 44h
skromcom equ 0cch
temp equ 71h
teml equ 75h
temh equ 74h
org 0000h
clr p3.0
clr p3.1
clr p3.2
clr p3.3
main: lcall ds18b20
lcall display
sjmp main
display:mov 40h,#00h
mov 29h,teml
mov 28h,temh
mov a,28h
clr c
rlc a
jnc conv
mov a,29h
cpl a
add a,#01h
mov 29h,a
mov a,28h
cpl a
orl a,0f0h
mov 28h,a
conv: mov a,29h
swap a
anl a,#0fh
mov 30h,a
mov a,28h
anl a,#0fh
swap a
add a,30h
mov b,#10
div ab
mov 31h,a
mov 32h,b
mov a,29h
anl a,#0fh
mov b,#10
mul ab
mov b,#16
div ab
mov 33h,a
m1: mov a,31h
mov dptr,#table
movc a,@a+dptr
clr p3.2
clr p3.3
clr p3.0
setb p3.1
mov p1,a
lcall delay2
mov a,32h
mov dptr,#table1
movc a,@a+dptr
clr p3.0
clr p3.1
clr p3.3
setb p3.2
mov p1,a
lcall delay2
mov a,33h
mov dptr,#table
movc a,@a+dptr
clr p3.0
clr p3.1
clr p3.2
setb p3.3
mov p1,a
lcall delay2
mov a,28h
clr c
rlc a
jnc k2
clr p3.3
clr p3.2
clr p3.1
setb p3.0
mov p1,#0bfh
lcall delay2
k2: djnz 40h,m1
ret
ds18b20:
temini: lcall reset
jnb rest_n,inibeg
sjmp temini
inibeg: mov a,#skromcom
lcall write
mov a,#covscra
lcall write
;读1820状态看温度转换是否结束
nop
tel2: clr din
nop
setb din
mov r4,#6
tel3: djnz r4,tel3
mov c,din
mov r5,#30
tel4: djnz r5,tel4
jc tel2
tel0: lcall reset
jb rest_n,tel0
mov a,#skromcom
lcall write
mov a,#rscra
lcall write
lcall read
mov teml,temp
lcall read
mov temh,temp
tel1: lcall reset
jb rest_n,tel1
ret
;################
read:
mov r6,#8
re1: clr din
mov r4,#5
setb din
re2: djnz r4,re2
mov c,din
rrc a
mov r5,#30
re3: djnz r5,re3
djnz r6,re1
mov temp,a
setb din
ret
;#########
write:
mov r3,#8
wr1: setb din
mov r4,#2
rrc a
clr din
wr2: djnz r4,wr2
mov din,c
mov r4,#30
wr3: djnz r4,wr3
djnz r3,wr1
setb din
ret
;########
reset:
clr rest_n
l0: clr din
mov r2,#200
l1: nop
djnz r2,l1
setb din
mov r2,#23
l4: djnz r2,l4
jnb din,l3
setb rest_n
ljmp res_out
l3: mov r2,#250
l2: djnz r2,l2
res_out:
ret
delay: mov r5,#20
d1: mov r6,#20
d2: mov r7,#200
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
delay2: mov r5,#10h
d3: mov r6,#38h
djnz r6,$
djnz r5,d3
ret
table: db 03fh
db 06h
db 5bh
db 4fh
db 66h
db 6dh
db 7dh
db 07h
db 7fh
db 6fh
table1: db 0bfh
db 86h
db 0dbh
db 0cfh
db 0e6h
db 0edh
db 0fdh
db 87h
db 0ffh
db 0efh
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -