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

📄 ds18b20.asm

📁 DS18B20的源程序,很好用的
💻 ASM
字号:
DAT     EQU     P1.0

ORG     00H
JMP     GETWD

;--------------------------------------------------------------
INIT:   CLR     EA
INI10:  SETB    DAT
        MOV     R2,#200
INI11:  CLR     DAT
        DJNZ    R2,INI11    ;主机发复位脉冲持续3×200US
        SETB    DAT         ;主机释放总路线,口线改为输入
        MOV     R2,#30
INI12:  DJNZ    R2,INI12    ;等待2×30US
        CLR     C
        ORL     C,DAT       ;数据线变低
        JC      INI10       ;未准备好,重新初始化
        MOV     R6,#80
INI13:  ORL     C,DAT
        JC      INI14       ;数据线变高,初始化成功
        DJNZ    R6,INI13    ;数据线变低,可持续3×80US
        SJMP    INI10       ;初始化失败,重来
INI14:  MOV     R2,#240
INI15:  DJNZ    R2,INI15    ;应答时间最少2×240US
        RET

;--------------------------------------------------------------
WRITE:  CLR     EA
        MOV     R3,#8       ;循环8次,写一个字节
WR11:   SETB    DAT
        MOV     R4,#8
        RRC     A           ;写入位从A中移到CY
        CLR     DAT
WR12:   DJNZ    R4,WR12     ;等待16US
        MOV     DAT,C       ;命令字按位依次送给DS18B20
        MOV     R4,#20
WR13:   DJNZ    R4,WR13     ;保证写过程持续60US
        DJNZ    R3,WR11     ;示送完一个字节继续
        SETB    DAT
        RET

;--------------------------------------------------------------
READ:   CLR     EA
        MOV     R6,#8       ;循环8次,读一个字节
RD11:   CLR     DAT
        MOV     R4,#4
        NOP                 ;低电平持续2US
        SETB    DAT         ;口线设过输入
RD12:   DJNZ    R4,RD12     ;等待8US
        MOV     C,DAT       ;主机按位依次读入DS18B20的数据
        RRC     A           ;读取的数据移入A
        MOV     R5,#30
RD13:   DJNZ    R5,RD13     ;保证读过程持续60US
        DJNZ    R6,RD11     ;读完一个字节的数据,存入A中
        SETB    DAT
        RET

;-------------------------------------------------------------
GETWD:  LCALL   INIT
        MOV     A,#0CCH
        LCALL   WRITE       ;发跳过ROM命令
        MOV     A,#44H
        LCALL   WRITE       ;发启动转换命令
        LCALL   INIT
        MOV     A,#0CCH
        LCALL   WRITE
        MOV     A,#0BEH     ;发读存储器命令
        LCALL   WRITE
        LCALL   READ
        MOV     50h,A     ;温度低位字节送入WDLSB
        LCALL   READ
        MOV     51h,A     ;温度高位字节送入WDMSB
        JMP     GETWD




⌨️ 快捷键说明

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