📄 ds1620a.asm
字号:
;****************************************************************
;/* 这是DS1620的汇编程序, 文件名DS1620A.ASM */
;/* 功能:本程序主要是读出DS1620芯片转换后的温度值,并把它放在 */
;/* 寄存器R1,R2中,R2中放高8位。注意,这两个8 位共16位中,只 */
;/* 有低9位有效。这里测温范围是-55℃~125℃。 */
;/* 本程序适合DS1620 和51系列单片机的连接,晶振为12MHZ左右。 */
;******************************************************************
DQ BIT P1.0
CLK BIT P1.1
RST BIT P1.2
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV SP,#30H
CLR EA
LCALL CONFIGURE ;写DS1620配置寄存器设定值
;LCALL RECONFIGURE ;读DS1620配置寄存器设定值
LCALL STARTCONVERT ;使DS1620 开始转换温度
LCALL READTEMPERATURE ;读出转换后的温度值
SJMP $
WRITE1620: ; 写DS1620
MOV R0,#08H ; 每次写入8B
ITWRITE:
CLR CLK ; 时钟脉冲置零
RRC A ; 右移A , 使最低位移入进位位C中
MOV DQ ,C ; 输出C到DQ
SETB CLK ; 产生时钟脉冲的上升沿
DJNZ R0,ITWRITE
RET
READ1620: ; 读DS1620
MOV R0, #08H ; 每次读出8B
SETB DQ ; 置DQ为1, 使其做为输入端
ITREAD:
CLR CLK ; 时钟脉冲置零
MOV C,DQ ; 将DQ 来的1 B 移入C
SETB CLK ; 产生时钟脉冲的上升沿
RRC A ; 右移A ,使进位C 移入A 中的最高位
DJNZ R0,ITREAD
CLR DQ
RET
CONFIGURE: ; DS1620写配置,入口参数为配置寄存器新配置内容
SETB RST ; 使DS1620的RST为高电平, 开始发送
MOV A , #0CH ; 发送“写”命令给DS1620
ACALL WRITE1620
MOV A , #00001010B ; 使工作方式寄存器中CUP=1,1SHOT=0,THF=0,TLF=0
ACALL WRITE1620
CLR RST ; 结束发送
RET
RECONFIGURE: ; DS1620读配置,返回值为配置寄存器内容
SETB RST ; 使DS1620的RST为高电平, 开始发送
MOV A , #0ACH ; 发送“读”命令给DS1620
ACALL WRITE1620
ACALL READ1620 ; 配置寄存器内容在累加器A中
CLR RST
RET
STARTCONVERT: ; 使DS1620 开始转换温度
SETB RST ; 使DS1620 的RST 为高电平, 开始发送命令
MOV A,#0EEH ; 发送“开始转换”命令给DS1620
ACALL WRITE1620
CLR RST ; 结束发送
RET
READTEMPERATURE: ; 读取温度值
SETB RST
MOV A,#0AAH ; 发送“读温度”命令给DS1620
ACALL WRITE1620
ACALL READ1620 ; 读取第1 字节
MOV R1,A ; 首字节送R1
ACALL READ1620 ; 读取第2字节
MOV R2,A ; 第2字节送R2
CLR RST
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -