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

📄 d18b20.asm

📁 单片机C语言教程
💻 ASM
字号:
;/*****************************************************************
;/* 这是DS18B20的汇编程序,  文件名D18B20.ASM                      */
;/* 功能:本程序主要是读出芯片DS18B20固有的序列号,序列号共64位,  */
;/*    也就是8个字节,读出后依次放在单片机的RAM 40H,41H,...47H中。*/
;/*    单片机的P1.0接DS18B20的BQ。                                */
;/*    本芯片的序列号为: 28h,10h,46h,e2h,00,00,00,7eh             */
;/*****************************************************************
DQ    EQU    P1.0
      ORG 0000H
      AJMP MAIN
      ORG 0020H
MAIN:
     MOV SP,#60H
     CLR EA      ;使用ds1820一定要禁止任何中断产生
     LCALL INT   ;初始化ds1820
     MOV A,#33H
     LCALL WRITE ;送入读ds1820的ROM命令
     LCALL READ  ;开始读出当前ds1820序列号
     MOV 40H,A
     LCALL READ
     MOV 41H,A
     LCALL READ
     MOV 42H,A
     LCALL READ
     MOV 43H,A
     LCALL READ
     MOV 44H,A
     LCALL READ
     MOV 45H,A
     LCALL READ
     MOV 46H,A
     LCALL READ
     MOV 47H,A
     SETB EA
     SJMP $

INT:             ;初始化ds1820子程序
     CLR EA
L0:  CLR DQ      ;ds1820总线为低复位电平
     MOV R2,#200
L1:  CLR DQ
     DJNZ R2,L1  ;总线复位电平保持400us
     SETB DQ     ;释放ds1820总线
     MOV R2,#30
L4:  DJNZ R2,L4  ;释放ds1820总线保持60us
     CLR C       ;清存在信号
     ORL C,DQ
     JC L0       ;存在吗?不存在则重新来
     MOV R6,#80
L5:  ORL C,DQ
     JC L3
     DJNZ R6,L5
     SJMP L0
L3:  MOV R2,#240
L2:  DJNZ R2,L2
     RET

WRITE:           ;向ds1820写操作命令子程序
     CLR EA
     MOV R3,#8   ;写入ds1820的bit数,一个字节8个bit
WR1: SETB DQ
     MOV R4,#8
     RRC A       ;把一个字节data(A)分成8个bit环移给 C
     CLR DQ      ;开始写入ds1820总线要处于复位(低)状态
WR2: DJNZ R4,WR2 ;ds1820总线复位保持16us
     MOV DQ,C    ;写入一个bit
     MOV R4,#20
WR3: DJNZ R4,WR3 ;等待40us
     DJNZ R3,WR1 ;写入下一个bit
     SETB DQ     ;重新释放ds1820总线
     RET

READ:
     CLR EA
     MOV R6,#8   ;连续读8个bit
RE1: CLR DQ      ;读前总线保持为低
     MOV R4,#4
     NOP
     SETB DQ     ;开始读总线释放
RE2: DJNZ R4,RE2 ;持续8us
     MOV C,DQ    ;从ds1820总线读得一个bit
     RRC A       ;把读得的位值环移给 A
     MOV R5,#30
RE3: DJNZ R5,RE3 ;持续60us
     DJNZ R6,RE1 ;读下一个bit
     SETB DQ     ;重新释放ds1820总线
     RET
     END

⌨️ 快捷键说明

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