📄 18b20.asm
字号:
;DS18B20读写程序
; 6Mhz晶振
start: lcall reset ;复位脉冲 480us - 960us
jnb f0 ,wdjc20a
mov r7,#10h
lcall delay15
mov a,#0CCh ;跳过号检测
lcall wr1820
mov a,#44h ;convert 命令
lcall wr1820
wdjc20a:
ret
;DS18B20读一个字节,出口:A=读入的字节
rd1820:
rd182a: MOV R2,#8
rd182f: CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
SETB DQ ;产生时间片
MOV R7,#3
nop
rd182d: DJNZ R7, rd182d
MOV C,DQ
MOV R7,#11
rd182e: DJNZ R7,rd182e
RRC A
DJNZ R2,rd182f
mov @R0,a
inc r0
djnz r1,rd182a
ret
;DS18B20的写一个字节 写入内容在A中
WR1820: MOV R2,#8
CLR C
WR1: CLR DQ
MOV R7,#3
wr2: DJNZ R7,wr2
RRC A
MOV DQ,C
MOV R7,#11
wr3: DJNZ R7,wr3
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
reset: clr dq
mov r7,#32 ;复位脉冲 480us - 960us 500us
lcall delay15
setb dq
mov r7,#4 ;15us -- 60us 60us
lcall delay15
clr f0
jb dq,rst1 ;1820 应答 将总线拉低 (保持60-240us)
setb f0 ;应答标志 1 为在线 f0
rst1: ret
;延时
DELAY15: MOV R6,#3 ;15us
DEL151: DJNZ R6,DEL151
DJNZ R7,DELAY15
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -