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

📄 18b20.asm

📁 18B20芯片为1-WIRE协议 该程序是用汇编语言完成的读取18B20芯片温度值的keil程序
💻 ASM
字号:
B20 BIT P1.0
ORG 0000H
AJMP INITIALIZATION

ORG 0030H

SENDA:
MOV SBUF,A
JNB TI,$
CLR TI
RET

DELAY600: ;精确延时600微秒子程序
	MOV R6,#2
	YS600D:MOV R7,#148
	DJNZ R7,$
	DJNZ R6,YS600D
	RET

DELAY30: ;精确延时30微秒子程序
	MOV R6,#4
	YS30D:MOV R7,#2
	DJNZ R7,$
	DJNZ R6,YS30D
	RET

DELAY80: ;精确延时80微秒子程序
	MOV R6,#2
	YS80D:MOV R7,#18
	DJNZ R7,$
	DJNZ R6,YS80D
	RET

DELAY100010: ;精确延时100010微秒子程序
	MOV R6,#216
	MOV R5,#20
	YS100010D:MOV R7,#230
	DJNZ R7,$
	DJNZ R6,YS100010D
	DJNZ R5,YS100010D
	RET



RESETSLOT:
	CLR B20
	LCALL DELAY600
	SETB B20
	LCALL DELAY30
	MOV C,B20
	JC RESETSLOT
	LCALL DELAY600
	RET



WRITESLOT_0:
	NOP
	CLR B20
	LCALL DELAY80
	SETB B20
	RET

WRITESLOT_1:
	NOP
	CLR B20
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	SETB B20
	LCALL DELAY80
	RET

READSLOT_C:
	NOP
	CLR B20
	NOP
	NOP
	SETB B20
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV C,B20
	LCALL DELAY30
	RET

WRITE_A:
	MOV R0,#008H
	BEGINWRITE:
	RRC A
	JC WRITE1
	LCALL WRITESLOT_0
	AJMP RETURN_WRITE
	WRITE1:
	LCALL WRITESLOT_1
	RETURN_WRITE:
	DJNZ R0,BEGINWRITE
	RET

READ_A:
	MOV R0,#008H
	BEGINREAD:	
	LCALL READSLOT_C
	RRC A
	DJNZ R0,BEGINREAD
	RET


INITIALIZATION:
MOV TMOD,#20H
MOV TL1,#0E6H
MOV TH1,#0E6H
SETB TR1
MOV SCON,#01010000B

MAIN:
LCALL RESETSLOT
MOV A,#0CCH
LCALL WRITE_A
MOV A,#044H
LCALL WRITE_A
SETB B20
JNB B20,$
LCALL DELAY600



LCALL RESETSLOT
MOV A,#0CCH
LCALL WRITE_A
MOV A,#0BEH
LCALL WRITE_A

LCALL READ_A
MOV R2,A

LCALL READ_A
MOV R3,A
;===========将整数温度值放入A===============
MOV A,R3
ANL A,#00FH
RL A
RL A
RL A
RL A
MOV R3,A
MOV A,R2
RR A
RR A
RR A
RR A
ANL A,#00FH
ORL A,R3
;=============转换成BCD=====================
MOV B,#00AH
DIV AB
MOV R0,B
MOV R1,A
;============================================



CPL P3.7
;AJMP MAIN


END

⌨️ 快捷键说明

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