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

📄 ds18b20.lst

📁 51单片机用汇编实例 包括ad
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  DS18B20                                                              05/23/2006 14:45:00 PAGE     1


MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN DS18B20.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE DS18B20.ASM SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;================================================================
                       2     ; 文件名称: DS18B20.ASM
                       3     ; 功能描述: 
                       4     ;================================================================
  7F00                 5     A_8255          EQU  7F00H      ; 8255寄存器定义
  7F01                 6     B_8255          EQU  7F01H
  7F03                 7     CON_8255        EQU  7F03H
                       8     
  00B4                 9     DQ      BIT  P3.4               ; P3.4 / T0
  0000                10     FLAG    BIT  00H
                      11     
  0060                12     TEMP    EQU  60H
                      13     
0000                  14             ORG 0000H
0000 020100           15             LJMP START
                      16     
0100                  17             ORG 0100H
0100 00               18     START:  NOP
0101 752000           19             MOV 20H, #00H
0104 755000           20             MOV 50H, #00H           ; 清显示缓冲(50H为高位)
0107 755100           21             MOV 51H, #00H
010A 755200           22             MOV 52H, #00H
                      23             ;LCALL READID           ; 读取器件ID
                      24             ;LCALL CONFIG18B20      ; 配置器件
010D 7481             25             MOV A, #81H
010F 907F03           26             MOV DPTR, #CON_8255     ; 初始化8255
0112 F0               27             MOVX @DPTR, A
0113 120121           28             LCALL DISPLAY           ; 显示
0116 12023E           29     STLP1:  LCALL TEMP_RESULT       ; 得到温度值
0119 120121           30             LCALL DISPLAY           ; 显示温度
011C 80F8             31             SJMP STLP1
                      32     
                      33     ; 延时子程序
                      34     ; 入口参数: R7
011E DFFE             35     DELAY:  DJNZ R7, DELAY
0120 22               36             RET
                      37     
                      38     ; 显示子程序
0121                  39     DISPLAY:
0121 C0E0             40             PUSH ACC
0123 907F01           41             MOV DPTR, #B_8255       ; 清屏LED
0126 7400             42             MOV A, #00H
0128 F0               43             MOVX @DPTR, A
                      44     
0129 7E03             45             MOV R6, #03H
012B 7850             46             MOV R0, #50H
012D 7AFE             47             MOV R2, #0FEH
012F 907F00           48     DPLY1:  MOV DPTR, #A_8255       ; LED位选
0132 EA               49             MOV A, R2
0133 F0               50             MOVX @DPTR, A
0134 23               51             RL A
0135 FA               52             MOV R2, A
0136 E6               53             MOV A, @R0              ; 显示段
0137 9002A0           54             MOV DPTR, #DISTAB
013A 93               55             MOVC A, @A+DPTR
013B 907F01           56             MOV DPTR, #B_8255
013E F0               57             MOVX @DPTR, A
013F 08               58             INC R0
A51 MACRO ASSEMBLER  DS18B20                                                              05/23/2006 14:45:00 PAGE     2

0140 7F60             59             MOV R7, #60H            ; 延时
0142 12011E           60             LCALL DELAY
0145 907F01           61             MOV DPTR, #B_8255       ; 清屏LED
0148 7400             62             MOV A, #00H
014A F0               63             MOVX @DPTR, A
014B DEE2             64             DJNZ R6, DPLY1
014D D0E0             65             POP ACC
014F 22               66             RET
                      67     
                      68     ; 初始化DS18B20
0150                  69     INIT18B20:
0150 D2B4             70             SETB DQ
0152 00               71             NOP
0153 C2B4             72             CLR DQ
0155 7FFA             73             MOV R7, #0FAH           ; 延时: 480us--960us
0157 12011E           74             LCALL DELAY
015A D2B4             75             SETB DQ
015C 7F0F             76             MOV R7, #0FH            ; 延时: 15us--60us
015E 12011E           77             LCALL DELAY
0161 00               78             NOP
0162 20B404           79             JB DQ, INIT1
0165 D200             80             SETB FLAG
0167 8002             81             SJMP INIT2
0169 C200             82     INIT1:  CLR FLAG
016B 7F64             83     INIT2:  MOV R7, #64H            ; 延时: 60us--240us
016D 12011E           84             LCALL DELAY
0170 00               85             NOP
0171 D2B4             86             SETB DQ
0173 22               87             RET
                      88     
                      89     ; 向DS18B20中写入一个字节
                      90     ; 入口参数: R1
0174                  91     WRITEBYTE:
0174 C0E0             92             PUSH ACC
0176 C3               93             CLR C
0177 7E08             94             MOV R6, #8
0179 E9               95             MOV A, R1
017A C2B4             96     WBYTE1: CLR DQ                  ; 1us--15us
017C 00               97             NOP
017D 13               98             RRC A
017E 92B4             99             MOV DQ, C
0180 7F20            100             MOV R7, #20H            ; 60us--120us
0182 12011E          101             LCALL DELAY
0185 D2B4            102             SETB DQ
0187 00              103             NOP
0188 DEF0            104             DJNZ R6, WBYTE1
018A D0E0            105             POP ACC
018C 22              106             RET
                     107     
                     108     ; 从DS18B20中读取一个字节
                     109     ; 出口参数: R1
018D                 110     READBYTE:
018D C0E0            111             PUSH ACC
018F 7E08            112             MOV R6, #8
0191 7400            113             MOV A, #0
0193 C3              114     RBYTE1: CLR C
0194 D2B4            115             SETB DQ
0196 00              116             NOP
0197 00              117             NOP
0198 C2B4            118             CLR DQ
019A 00              119             NOP
019B 00              120             NOP
019C 00              121             NOP
019D D2B4            122             SETB DQ
019F 7F05            123             MOV R7, #5
01A1 12011E          124             LCALL DELAY
A51 MACRO ASSEMBLER  DS18B20                                                              05/23/2006 14:45:00 PAGE     3

01A4 A2B4            125             MOV C, DQ
01A6 7F17            126             MOV R7, #23
01A8 12011E          127             LCALL DELAY
01AB 13              128             RRC A
01AC DEE5            129             DJNZ R6, RBYTE1
01AE F9              130             MOV R1, A
01AF D0E0            131             POP ACC
01B1 22              132             RET
                     133     
                     134     ; 从DS18B20中读取多个字节
                     135     ; 入口: R4(读取个数)
                     136     ; 出口: 30H开始的地址中
01B2                 137     READ_BYTES:
01B2 7830            138             MOV R0, #30H            ; 读出数据保存首地址
01B4                 139     R_BYTES1:
01B4 12018D          140             LCALL READBYTE          ; 读取1字节
01B7 E9              141             MOV A, R1
01B8 F6              142             MOV @R0, A              ; 保存
01B9 08              143             INC R0                  ; 地址+1
01BA DCF8            144             DJNZ R4, R_BYTES1
01BC 22              145             RET
                     146     
                     147     ; 读取温度
01BD                 148     GETTEMP:
01BD C0E0            149             PUSH ACC
01BF C000            150             PUSH 00H
01C1 7C09            151             MOV R4, #9              ; 读取9字节

⌨️ 快捷键说明

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