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

📄 ds1620a.asm

📁 单片机C语言教程
💻 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 + -