⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 18b20.asm

📁 ds18b20作单片机温度传感器设计
💻 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 + -