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

📄 读ds18b20地址.asm

📁 ds18b20相关程序 单点温度读取 64位光刻序列读取
💻 ASM
字号:
                  ;12MHZ,默认,读18B20序号
      sbit TMDAT  =P0^0
      ORG 0000H 
      AJMP MAIN 
      ORG 0020H
MAIN: mov r3,#10h ;清楚存储编号单元
      mov r0,#40h
ss: mov @r0,#0
      inc r0
      djnz r3,ss 
      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 TMDAT      ;ds1820总线为低复位电平 
      MOV R2,#200 
L1: CLR TMDAT 
      DJNZ R2,L1  ;总线复位电平保持400us 
      SETB TMDAT   ;释放ds1820总线 
      MOV R2,#30 
L4: DJNZ R2,L4    ;释放ds1820总线保持60us 
      jb  TMDAT,L0 ;存在吗 不存在则重新来 
      MOV R6,#80 
L5: ORL C,TMDAT 
      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 TMDAT 
      MOV R4,#8 
      RRC A       ;把一个字节data(A)分成8个bit环移给 C 
      CLR TMDAT    ;开始写入ds1820总线要处于复位(低)状态 
WR2: DJNZ R4,WR2  ;ds1820总线复位保持16us 
      MOV TMDAT,C  ;写入一个bit 
      MOV R4,#20 
WR3: DJNZ R4,WR3  ;等待40us 
      DJNZ R3,WR1 ;写入下一个bit 
      SETB TMDAT   ;重新释放ds1820总线 
RET 
;------------------------------------------------------------------------------
READ: CLR EA 
      MOV R6,#8   ;连续读8个bit 
RE1: CLR TMDAT     ;读前总线保持为低 
      MOV R4,#4 
      NOP 
      SETB TMDAT   ;开始读总线释放 
RE2: DJNZ R4,RE2  ;持续8us 
      MOV C,TMDAT  ;从ds1820总线读得一个bit 
      RRC A       ;把读得的位值环移给 A 
      MOV R5,#30 
RE3: DJNZ R5,RE3  ;持续60us 
      DJNZ R6,RE1 ;读下一个bit 
      SETB TMDAT  ;重新释放ds1820总线 
RET 
END 

⌨️ 快捷键说明

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