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

📄 xulie.asm

📁 单片机温度测量程序
💻 ASM
字号:
;|--------------------------------------------------|
;|      读出ds1820序列号应用程序,P1.0接ds1820       |
;|--------------------------------------------------|
        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
        LCALL READ
        MOV 48H,A
        LCALL READ
        MOV 49H,A
        SETB EA
        SJMP $

INT:                    ;初始化ds1820子程序
        CLR EA
     L0:CLR P1.0        ;ds1820总线为低复位电平
        MOV R2,#200
     L1:CLR P1.0
        DJNZ R2,L1      ;总线复位电平保持400us
        SETB P1.0       ;释放ds1820总线
        MOV R2,#30
     L4:DJNZ R2,L4      ;释放ds1820总线保持60us
        CLR C           ;清存在信号(存在C=1,不存在c=0)
        ORL C,P1.0
        JC L0           ;存在吗?不存在则重新来
        MOV R6,#80
     L5:ORL C,P1.0
        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 P1.0
        MOV R4,#8
        RRC A           ;把一个字节data(A)分成8个bit环移给 C
        CLR P1.0        ;开始写入ds1820总线要处于复位(低)状态
    WR2:DJNZ R4,WR2     ;ds1820总线复位保持16us
        MOV P1.0,C      ;写入一个bit
        MOV R4,#20
    WR3:DJNZ R4,WR3     ;等待40us
        DJNZ R3,WR1     ;写入下一个bit
        SETB P1.0       ;重新释放ds1820总线
        RET

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

        END

⌨️ 快捷键说明

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