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

📄 ds1620b.asm

📁 单片机C语言教程
💻 ASM
字号:
;****************************************************************
;/* 这是被CALL20B.C调用的DS1620汇编语言程序,文件名为DS1620B.ASM */
;/* 功能:本程序主要是读出DS1620芯片转换后的温度值,并把它放在   */
;/*    寄存器R1,R2中,R2中放高8位。注意,这两个8 位共16位中,只  */
;/*    有低9位有效。这里测温范围是-55℃~125℃。                  */
;/*    本程序是被调用的汇编语言程序,由外部传递进来的参数在R7中,*/
;/*    是字符型的,在程序中未用;返回的参数是整形的,放在寄存器  */
;/*    R6,R7中,R6中放高8位。                                    */
;******************************************************************
DQ       BIT P1.0
CLK      BIT P1.1
RST      BIT P1.2

   NAME DS1620
   ?PR?_a_func?DS1620     SEGMENT CODE
   ?DT?_a_func?DS1620     SEGMENT DATA OVERLAYABLE
   ?DT?DS1620             SEGMENT DATA
   PUBLIC   chai
   PUBLIC   ?_a_func?BYTE
   PUBLIC    _a_func
   RSEG  ?DT?_a_func?DS1620
	 ?_a_func?BYTE:
	 aa:DS 1
   RSEG  ?DT?DS1620
	 chai:DS 2
   RSEG  ?PR?_a_func?DS1620
	 _a_func:
         MOV aa,R7             ;R7中放传递进来的字符型参数
         LCALL CONFIGURE       ;写DS1620配置寄存器设定值
         LCALL STARTCONVERT    ;使DS1620 开始转换温度
         LCALL READTEMPERATURE ;读出转换后的温度值
         MOV A,R1
         MOV R7,A
         MOV A,R2
         MOV R6,A              ;R6,R7中放返回温度值,R6中放高位
         RET


WRITE1620:              ; 写DS1620
         MOV R0,#08H          ; 每次写入8B
ITWRITE:
         CLR CLK              ; 时钟脉冲置零
         RRC A                ; 右移A , 使最低位移入进位位C 中
         MOV DQ ,C            ; 输出1B (即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,R7
         MOV A , #00001010B   ; 使工作方式寄存器中CUP=1,1SHOT=0,THF= 0, TLF= 0
         ACALL WRITE1620
         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 + -