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

📄 ds1820new.asm

📁 PTR2000(短距离无线测试)的温度测试程序
💻 ASM
字号:
     ORG  0000H
     LJMP MAIN
     ORG   0200H
MAIN: CLR  P1.0
      CLR  P1.1
      lcall  MAIN1
      CPL P1.1
      LCALL T11
      LJMP MAIN

T11:   MOV R0,#0FFH
time3: MOV R1,#0FFH
TIME1:MOV  R2,#0FH
time2: DJNZ R2,time2
       DJNZ R1,TIME1
       DJNZ R0,TIME3
       RET
MAIN1:CLR A
     LCALL GET_TEMP
     SJMP $
GET_TEMP:
         CLR EA ; 使用ds1820一定要禁止任何中断产生
         LCALL INT ; 调用初使化子程序
         MOV A,#0CCH
         LCALL WRITE ; 送入跳过ROM命令
         MOV A, #44H
         LCALL WRITE ; 送入温度转换命令
         LCALL INT ; 温度转换完全,再次初使化ds1820
         MOV A,#0CCH
         LCALL WRITE ; 送入跳过ROM命令
         MOV A,#0BEH
         LCALL WRITE ; 送入读温度暂存器命令
         LCALL READ
         MOV R0,A ; 读出温度值低字节存入R0
         LCALL READ
         MOV R1,A ;读出谩度值高字节存入R1
         SETB EA
         RET
INT: CLR EA ; 初始化ds1820子程序
L0:CLR P1.7 ; ds1820总线为低复位电平
    MOV R2,#200
L1:CLR P1.7
    DJNZ R2,L1 ;总线复位电平保持400us
   SETB P1.7 ; 释放ds1820总线
   MOV R2,#30
L4:DJNZ R2,L4 ;  释放ds1820总线保持60us
   CLR C ;清存在信号
   ORL C,P1.7
   JC L0 ; 存在吗?不存在则重新来
   MOV R6,#80
L5:ORL C,P1.7
   JC L3
   DJNZ R6,L5
   SJMP L0
L3:MOV R2,#240
L2:DJNZ R2,L2
   RET
WRITE: CLR EA;向ds1820写操作命令子程序
       MOV R3,#8 ;写入ds1820的bit数,一个字节8个bit
WR1:SETB P1.7
    MOV R4,#8
    RRC A ;  把一个字节data(A)分成8个bit环移给C
    CLR P1.7 ; 开始写入ds1820总线要处于复位(低)状态
WR2:DJNZ R4,WR2 ;  ds1820总线复位保持16us
   MOV P1.7,C ;写入一个bit
   MOV R4,#20
WR3:DJNZ R4,WR3 ;等待40us
    DJNZ R3,WR1 ;写入下一个bit
    SETB P1.7 ;重新释放ds1820总线
    RET
READ:CLR EA
     MOV R6,#8 ;连续读8个bit
RE1:CLR P1.7 ;读前总线保持为低
    MOV R4,#4
    NOP
    SETB P1.7 ;开始读总线释放
RE2:DJNZ R4,RE2 ;持续8us
    MOV C,P1.7 ;从ds1820总线读得一个bit
    RRC A ;把读得的位值环移给A
    MOV R5,#30
RE3:DJNZ R5,RE3 ;持续60us
    DJNZ R6,RE1 ;读下一个bit
    SETB P1.7 ;重新释放ds1820总线
    RET
END



⌨️ 快捷键说明

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