📄 读18b20序列号.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LU1 EQU 50H
LU2 EQU 60H ;读第二个1820数据不许地址
SHU BIT P3.0 ;595的输入数据
CP BIT P3.1 ;595的CP
LATCH EQU P1.7 ;595放数
DAT BIT P1.6 ;18B20的数据端
TH EQU 100 ;高温报警点100
TL EQU 0 ;低温报警点0
WDG8 DATA 23H ;温度高8位
WDD8 DATA 24H ;温度低8位
WDXS1 DATA 33H ;;用三位温度显示
WDXS2 DATA 34H
WDXS3 DATA 35H
LUXS DATA 22H ;;显示路数
K1 BIT P3.1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H
LJMP START
ORG 0030H
START: LCALL CRAM
CLR LATCH
MAIN: LCALL INT ;初始化
LCALL RESET
MOV A,#33H ;READ ROM
LCALL WRITE
MOV R0,#30H
MOV R3,#08H
RRRRR: LCALL READ
MOV @R0,A
INC R0
DJNZ R3,RRRRR
LJMP MAIN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INT: LCALL RESET ;初始化
MOV A,#0CCH ;跳过ROM
LCALL WRITE
MOV A,#4EH ;写暂存存储器
LCALL WRITE
MOV A,#TH ;高温报警点
LCALL WRITE
MOV A,#TL ;低温报警点
LCALL WRITE
MOV A,#7FH ;取12位精度
LCALL WRITE
LCALL RESET ;调用初使化子程序
MOV A,#0CCH
LCALL WRITE ;送入跳过ROM命令
MOV A, #44H
LCALL WRITE ;送入温度转换命令
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READT: MOV A,#0BEH
LCALL WRITE ;送入读温度暂存器命令
LCALL READ
MOV 24H,A ;读出温度值低字节存入24H
LCALL READ
MOV 23H,A ;读出温度值高字节存入23H
LCALL RESET
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READ : MOV R6,#08H
RD1: CLR DAT
MOV R5,#6
NOP
SETB DAT
DJNZ R5,$ ;延时12us
MOV C,DAT
RRC A
MOV R4,#30 ;延时60us
DJNZ R4,$
DJNZ R6,RD1
SETB DAT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE: MOV R6,#8
WT1: SETB DAT
MOV R5,#8
RRC A
CLR DAT
DJNZ R5,$ ;延时16us
MOV DAT,C
MOV R4,#30 ;延时60us
DJNZ R4,$
DJNZ R6,WT1 ;移位8次
SETB DAT
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RESET: CLR DAT
MOV R7,#250
DJNZ R7,$ ;保持低电平500us
SETB DAT
MOV R7,#30
RE0: JNB DAT,RE1
DJNZ R7,RE0 ;释放等待16~60us
LJMP RE2
RE1: SETB 00H ; 置标志位,表示DS1820存在
LJMP RE3
RE2: CLR 00H ; 清标志位,表示DS1820不存在
LJMP RE4
RE3: MOV R7,#240
DJNZ R7,$
RE4: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CRAM: MOV R7,#60H ;清内存
MOV A,#00H
MOV R1,#23H
CRAM1: MOV @R1,A
INC R1
DJNZ R7,CRAM1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -