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

📄 18b20.txt

📁 主要针对的18B20数字温度计的设计,其中包括了,串行接口的读写程序.
💻 TXT
字号:
DQ EQU P1.0
ORG 00H
JMP START
START:
ACALL INIT
BEGIN:
LCALL RDTEMP
LCALL DIVV
ACALL DISPLAY
SJMP BEGIN
DIVV:
MOV A,41H;低八位
ANL A,#0FH;低四位为小数,屏蔽高四位
MOV B,#10
MUL AB
MOV B,#16
DIV AB ;*10/16得小数位
MOV R1,B ;四舍五入
CJNE R1,#08,DIVV1
INC A
AJMP DIVV2
DIVV1:
JC DIVV2
INC A
DIVV2:
MOV 70H,A;小数
MOV A,41h
ANL A,#0f0H
SWAP A
MOV R2,A
MOV A,40H ;高八位
ANL A,#07H
SWAP A
ADD A,R2
MOV B,#10
DIV AB
MOV 71H,B;个位
MOV 72H,A;十位
RET
RDTEMP:
LCALL RESET
MOV A,#0CCH ;跳过读序列号
LCALL WRITE
MOV A,#044H ;启动A/D转换
LCALL WRITE
LCALL RESET
MOV A,#0CCH ;跳过读序列号
LCALL WRITE
MOV A,#0BEH ;读寄存器
LCALL WRITE
LCALL READ
MOV 41H,A ;温度低位
LCALL READ
MOV 40H,A ;温度高位
LCALL READ
MOV 42H,A ;报警上限
LCALL READ
MOV 43H,A ;报警下限
LCALL READ
MOV 44H,A ;分辨率
RET
INIT:
LCALL RESET
MOV A,#0CCH
LCALL WRITE
MOV A,#4EH ;写寄存器
LCALL WRITE
MOV A,#35 ;高温报警值
LCALL WRITE
MOV A,#20 ;低温报警值
LCALL WRITE
MOV A,#7fh ;分辨率为12位
LCALL WRITE
RET
RESET:
RA:
SETB DQ
MOV R1,#240 ;拉低480us
RB:
CLR DQ
DJNZ R1,RB
SETB DQ
MOV R1,#30 ;释放60us
DJNZ R1,$
CLR C
ORL C,DQ
JC RB ;判断响应低电平
MOV R6,#40
RC:
ORL C,DQ
JC RD
DJNZ R6,RC
SJMP RA
RD:
RET
WRITE:
MOV R2,#08 ;写一个字节
WR1:
SETB DQ
MOV R3,#07 ;拉低15us
RRC A
CLR DQ
DJNZ R3,$
MOV DQ,C ;数据写入
MOV R3,#30 ;保持60us
DJNZ R3,$
DJNZ R2,WR1
SETB DQ
RET
READ:
MOV R4,#08 ;读一个字节
RE1:
CLR DQ ;拉低数据线
MOV R5,#07
SETB DQ ;释放数据线
DJNZ R5,$ ;保持15us
MOV C,DQ
RRC A
MOV R6,#25
DJNZ R6,$
DJNZ R4,RE1
SETB DQ
RET
delay1: ;延时8ms
MOV R5,#20
DEL1:
MOV R6,#200 ;400us
DJNZ R6,$
DJNZ R5,DEL1
ret
DELAY2: ;延时1ms
MOV R5,#5
DELA1:
MOV R6,#100
DJNZ R6,$
DJNZ R5,DELA1
RET
DISPLAY:
mov p0,#00h
mov A,72h
MOV P2,A
call delay1
mov p0,#01h
MOV A,71H
MOV P2,A
call delay1
mov p0,#02h
MOV A,70H
MOV P2,A
call delay2
RET








⌨️ 快捷键说明

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