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

📄 ds18b20.asm

📁 读取ds1820温度程序。功能比较简单
💻 ASM
字号:
	org	00h
	ljmp	start
	org	30h
start:
	mov	sp,#60h
	clr	ea		;禁止中断
	lcall	init_1820	;初始化
	jnb	f0,exit		;ds18b20不存在,退出
	mov	a,#0cch		;跳过rom
	lcall	write_byte
	mov	a,#4eh		;写暂存器地址2,3
	lcall	write_byte
	mov	a,#0ffh		;地址2值
	lcall	write_byte
	mov	a,#00h		;地址3值
	lcall	write_byte
	lcall	init_1820	;初始化
	mov	a,#0cch		;跳过rom指令
	lcall	write_byte
	mov	a,#44h		;温度转换指令
	lcall	write_byte
;	setb	p1.0
;	lcall	delay_600ms	;不用独立电源时候需要上拉500ms以上
    wait:	
  	lcall	read_byte
	cjne	a,#0ffh,wait	;等待温度转换完成

	lcall	init_1820	;初始化
	mov	a,#0cch		;跳过rom
	lcall	write_byte
	mov	a,#0beh		;读暂存器 9个字节
	lcall	write_byte
	lcall	read_byte
	mov	30h,a		;lsb
	lcall	read_byte
	mov	31h,a		;msb
	lcall	read_byte
	mov	32h,a		;th
	lcall	read_byte
	mov	33h,a		;tl
	lcall	read_byte
	mov	34h,a		;保留字节
	lcall	read_byte
	mov	35h,a		;保留字节
	lcall	read_byte
	mov	36h,a		;count remain
	lcall	read_byte
	mov	37h,a		;count per C
	lcall	read_byte
	mov	38h,a		;crc
    exit:
	ret


init_1820:
	push	acc
	push	b
	setb	p1.0
	nop
	clr	p1.0		;初始低电平 480us--960us
	mov	b,#250d
	djnz	b,$
	setb	p1.0		;释放总线
	mov	b,#33d
	djnz	b,$
	mov	c,p1.0		;读取1820返回存在脉冲
	jc	not_exist	;为1,则不存在1820
	mov	b,240d		;延迟480us	
	djnz	b,$	
	setb	f0		;设置存在标志
	pop	b
	pop	acc
	ret
   not_exist:
   	clr	f0		;清楚存在标志
	pop	b
	pop	acc
	ret


write_b:
	push	b
	clr	p1.0
	nop
	nop
	nop
	nop
	nop
	nop
	mov	p1.0,c
	mov	b,#33d
	djnz	b,$
	setb	p1.0
	nop
	nop
	nop
	pop	b
	ret

read_b:
	push	b
	clr	p1.0
	nop
	nop
	nop
	nop
	nop
	setb	p1.0
	nop
	nop
	mov	c,p1.0
	mov	b,#33d
	djnz	b,$
	setb	p1.0
	nop
	nop
	pop	b
	ret

read_byte:			;读取字节放在acc中
	push	b
	mov	b,#08h
    loop_r8:
    	lcall	read_b
	rrc	a
	djnz	b,loop_r8
	pop	b
	ret


write_byte:			;要写的字节放在acc中
	push	b
	mov	b,#08h
    loop_w8:
    	rrc	a
	lcall	write_b
	djnz	b,loop_w8
	pop	b
	ret

delay_600ms:
	push	b
	mov	r0,#06d
    l1:
	mov	r1,#200d
    l2:
	mov	b,#250d
	djnz	b,$
	djnz	r1,l2
	djnz	r0,l1
	pop	b
	ret

	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -