📄 18b20.lst
字号:
A51 MACRO ASSEMBLER 18B20 02/16/2007 16:00:49 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN 18b20.OBJ
ASSEMBLER INVOKED BY: d:\Keil\C51\BIN\A51.EXE 18b20.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 C2B7 1 CLR P3.7
0002 753800 2 MAIN:MOV 38H,#00H
0005 753900 3 MOV 39H,#00H
0008 753A00 4 MOV 3AH,#00H
000B 753B00 5 MOV 3BH,#00H
000E 1200C5 6 LCALL GET_TEMPER
0011 12066A 7 LCALL TEMPRRO
0014 75A006 8 MOV P2,#06H
0017 12070D 9 LCALL PRO
10 ;------------------------------------------------------
11
001A 753800 12 MOV 38H,#00H
001D 753900 13 MOV 39H,#00H
0020 753A00 14 MOV 3AH,#00H
0023 753B00 15 MOV 3BH,#00H
0026 120179 16 LCALL GET_TEMPER2
0029 12066A 17 LCALL TEMPRRO
002C 75A05B 18 MOV P2,#5BH
002F 12070D 19 LCALL PRO
20 ;------------------------------------------------------
21
0032 753800 22 MOV 38H,#00H
0035 753900 23 MOV 39H,#00H
0038 753A00 24 MOV 3AH,#00H
003B 753B00 25 MOV 3BH,#00H
003E 12022D 26 LCALL GET_TEMPER3
0041 12066A 27 LCALL TEMPRRO
0044 75A04F 28 MOV P2,#4FH
0047 12070D 29 LCALL PRO
30
31 ;------------------------------------------------------
32
004A 753800 33 MOV 38H,#00H
004D 753900 34 MOV 39H,#00H
0050 753A00 35 MOV 3AH,#00H
0053 753B00 36 MOV 3BH,#00H
0056 1202E1 37 LCALL GET_TEMPER4
0059 12066A 38 LCALL TEMPRRO
005C 75A066 39 MOV P2,#66H
005F 12070D 40 LCALL PRO
41 ;------------------------------------------------------
42
0062 753800 43 MOV 38H,#00H
0065 753900 44 MOV 39H,#00H
0068 753A00 45 MOV 3AH,#00H
006B 753B00 46 MOV 3BH,#00H
006E 120395 47 LCALL GET_TEMPER5
0071 12066A 48 LCALL TEMPRRO
0074 75A06D 49 MOV P2,#6DH
0077 12070D 50 LCALL PRO
51 ;------------------------------------------------------
52
007A 753800 53 MOV 38H,#00H
007D 753900 54 MOV 39H,#00H
0080 753A00 55 MOV 3AH,#00H
0083 753B00 56 MOV 3BH,#00H
0086 120449 57 LCALL GET_TEMPER6
0089 12066A 58 LCALL TEMPRRO
A51 MACRO ASSEMBLER 18B20 02/16/2007 16:00:49 PAGE 2
008C 75A07D 59 MOV P2,#7DH
008F 12070D 60 LCALL PRO
61 ;------------------------------------------------------
62
0092 753800 63 MOV 38H,#00H
0095 753900 64 MOV 39H,#00H
0098 753A00 65 MOV 3AH,#00H
009B 753B00 66 MOV 3BH,#00H
009E 1204FD 67 LCALL GET_TEMPER7
00A1 12066A 68 LCALL TEMPRRO
00A4 75A007 69 MOV P2,#07H
00A7 12070D 70 LCALL PRO
71 ;------------------------------------------------------
72
00AA 753800 73 MOV 38H,#00H
00AD 753900 74 MOV 39H,#00H
00B0 753A00 75 MOV 3AH,#00H
00B3 753B00 76 MOV 3BH,#00H
00B6 1205B1 77 LCALL GET_TEMPER8
00B9 12066A 78 LCALL TEMPRRO
00BC 75A07F 79 MOV P2,#7FH
00BF 12070D 80 LCALL PRO
00C2 020002 81 LJMP MAIN
82
83
84
85 ;==============================================CHL1
00C5 86 GET_TEMPER:
00C5 D290 87 SETB P1.0H ; 定时入口
00C7 120153 88 BCD: LCALL INIT_1820
00CA 200003 89 JB 00H,S22
00CD 0200C7 90 LJMP BCD ; 若DS18B20不存在则返回
91
00D0 120665 92 S22: LCALL DELAY1
00D3 74CC 93 MOV A,#0CCH ; 跳过ROM匹配------0CC命令
00D5 120117 94 LCALL WRITE_1820
00D8 7444 95 MOV A,#44H ; 发出温度转换命令
00DA 120117 96 LCALL WRITE_1820
00DD 00 97 NOP
00DE 120665 98 LCALL DELAY1
00E1 120153 99 CBA:LCALL INIT_1820
00E4 200003 100 JB 00H,ABC
00E7 0200E1 101 LJMP CBA
00EA 120665 102 ABC:LCALL DELAY1
00ED 74CC 103 MOV A,#0CCH ; 跳过ROM匹配
00EF 120117 104 LCALL WRITE_1820
00F2 74BE 105 MOV A,#0BEH ; 发出读温度命令
00F4 120117 106 LCALL WRITE_1820
00F7 12012F 107 LCALL READ_18200 ;READ_1820
00FA 22 108 RET
109 ;==============================
00FB 110 READ_1820:
00FB 7A08 111 MOV R2,#8
00FD 112 RE1:
00FD C3 113 CLR C
00FE D290 114 SETB P1.0H
0100 00 115 NOP
0101 00 116 NOP
0102 C290 117 CLR P1.0H
0104 00 118 NOP
0105 00 119 NOP
0106 00 120 NOP
0107 D290 121 SETB P1.0H
0109 7B07 122 MOV R3,#7
010B DBFE 123 DJNZ R3,$
010D A290 124 MOV C,P1.0H
A51 MACRO ASSEMBLER 18B20 02/16/2007 16:00:49 PAGE 3
010F 7B17 125 MOV R3,#23
0111 DBFE 126 DJNZ R3,$
0113 13 127 RRC A
0114 DAE7 128 DJNZ R2,RE1
0116 22 129 RET
130 ;=============================
0117 131 WRITE_1820:
0117 7A08 132 MOV R2,#8
0119 C3 133 CLR C
011A 134 WR1:
011A C290 135 CLR P1.0H
011C 7B06 136 MOV R3,#6
011E DBFE 137 DJNZ R3,$
0120 13 138 RRC A
0121 9290 139 MOV P1.0H,C
0123 7B17 140 MOV R3,#23
0125 DBFE 141 DJNZ R3,$
0127 D290 142 SETB P1.0H
0129 00 143 NOP
012A DAEE 144 DJNZ R2,WR1
012C D290 145 SETB P1.0H
012E 22 146 RET
147 ;=======================================
012F 148 READ_18200:
012F 7C02 149 MOV R4,#2 ; 将温度高位和低位从DS18B20中读出
0131 7931 150 MOV R1,#31H ; 低位存入30H(TEMPER_L),高位存入31H(TEMPER_H)
0133 151 RE00:
0133 7A08 152 MOV R2,#8
0135 153 RE01:
0135 C3 154 CLR C
0136 D290 155 SETB P1.0H
0138 00 156 NOP
0139 00 157 NOP
013A C290 158 CLR P1.0H
013C 00 159 NOP
013D 00 160 NOP
013E 00 161 NOP
013F D290 162 SETB P1.0H
0141 7B07 163 MOV R3,#7
0143 DBFE 164 DJNZ R3,$
0145 A290 165 MOV C,P1.0H
0147 7B17 166 MOV R3,#23
0149 DBFE 167 DJNZ R3,$
014B 13 168 RRC A
014C DAE7 169 DJNZ R2,RE01
014E F7 170 MOV @R1,A
014F 19 171 DEC R1
0150 DCE1 172 DJNZ R4,RE00
0152 22 173 RET
174 ;=======================================
0153 175 INIT_1820:
0153 D290 176 SETB P1.0H
0155 00 177 NOP
0156 C290 178 CLR P1.0H
0158 78FA 179 MOV R0,#250
015A 180 TSR1:
015A D8FE 181 DJNZ R0,TSR1 ; 延时520us
015C D290 182 SETB P1.0H
015E 7825 183 MOV R0,#25H ;96US-25H
0160 184 TSR2:
0160 D8FE 185 DJNZ R0,TSR2
0162 309003 186 JNB P1.0H,TSR3;如D0为低则复位成功,DS18B20存在
0165 02016D 187 LJMP TSR4 ; 延时
0168 188 TSR3:
0168 D200 189 SETB 00H ; 置标志位,表示DS1820存在
016A 020172 190 LJMP TSR5
A51 MACRO ASSEMBLER 18B20 02/16/2007 16:00:49 PAGE 4
016D 191 TSR4:
016D C200 192 CLR 00H ; 清标志位,表示DS1820不存在
016F 020176 193 LJMP TSR7
0172 194 TSR5:
0172 786B 195 MOV R0,#06BH ;200US
0174 196 TSR6:
0174 D8FE 197 DJNZ R0,TSR6 ; 延时
0176 198 TSR7:
0176 D290 199 SETB P1.0H ;拉高总线
0178 22 200 RET
201 ;===============================
0179 202 GET_TEMPER2:
0179 D291 203 SETB P1.1H ; 定时入口
017B 120207 204 BCD2: LCALL INIT_18202
017E 200003 205 JB 00H,S222
0181 02017B 206 LJMP BCD2 ; 若DS18B20不存在则返回
207
0184 120665 208 S222: LCALL DELAY1
0187 74CC 209 MOV A,#0CCH ; 跳过ROM匹配------0CC命令
0189 1201CB 210 LCALL WRITE_18202
018C 7444 211 MOV A,#44H ; 发出温度转换命令
018E 1201CB 212 LCALL WRITE_18202
0191 00 213 NOP
0192 120665 214 LCALL DELAY1
0195 120207 215 CBA2:LCALL INIT_18202
0198 200003 216 JB 00H,ABC2
019B 020195 217 LJMP CBA2
019E 120665 218 ABC2:LCALL DELAY1
01A1 74CC 219 MOV A,#0CCH ; 跳过ROM匹配
01A3 1201CB 220 LCALL WRITE_18202
01A6 74BE 221 MOV A,#0BEH ; 发出读温度命令
01A8 1201CB 222 LCALL WRITE_18202
01AB 1201E3 223 LCALL READ_182002 ;READ_1820
01AE 22 224 RET
225 ;==============================
01AF 226 READ_18202:
01AF 7A08 227 MOV R2,#8
01B1 228 RE12:
01B1 C3 229 CLR C
01B2 D291 230 SETB P1.1H
01B4 00 231 NOP
01B5 00 232 NOP
01B6 C291 233 CLR P1.1H
01B8 00 234 NOP
01B9 00 235 NOP
01BA 00 236 NOP
01BB D291 237 SETB P1.1H
01BD 7B07 238 MOV R3,#7
01BF DBFE 239 DJNZ R3,$
01C1 A291 240 MOV C,P1.1H
01C3 7B17 241 MOV R3,#23
01C5 DBFE 242 DJNZ R3,$
01C7 13 243 RRC A
01C8 DAE7 244 DJNZ R2,RE12
01CA 22 245 RET
246 ;=============================
01CB 247 WRITE_18202:
01CB 7A08 248 MOV R2,#8
01CD C3 249 CLR C
01CE 250 WR12:
01CE C291 251 CLR P1.1H
01D0 7B06 252 MOV R3,#6
01D2 DBFE 253 DJNZ R3,$
01D4 13 254 RRC A
01D5 9291 255 MOV P1.1H,C
01D7 7B17 256 MOV R3,#23
A51 MACRO ASSEMBLER 18B20 02/16/2007 16:00:49 PAGE 5
01D9 DBFE 257 DJNZ R3,$
01DB D291 258 SETB P1.1H
01DD 00 259 NOP
01DE DAEE 260 DJNZ R2,WR12
01E0 D291 261 SETB P1.1H
01E2 22 262 RET
263 ;=======================================
01E3 264 READ_182002:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -