📄 ds18b20.ls1
字号:
00CD 208 HLTEN BIT 0C8H.5
00CF 209 PLLEN BIT 0C8H.7
00A7 210 WDCON DATA 0A7H
00E3 211 SPDAT DATA 0E3H
212 ?PR?DS18B20_Initial?DS18B20 SEGMENT CODE
213 ?PR?_DS18B20_Write?DS18B20 SEGMENT CODE
214 ?PR?DS18B20_Read?DS18B20 SEGMENT CODE
215 ?PR?DS18B20_Start?DS18B20 SEGMENT CODE
216 ?PR?DS18B20_WaitDQ?DS18B20 SEGMENT CODE
217 ?PR?DS18B20_ReadTM?DS18B20 SEGMENT CODE
218 ?DT?DS18B20_ReadTM?DS18B20 SEGMENT DATA OVERLAYABLE
219 ?DT?DS18B20 SEGMENT DATA
220 EXTRN CODE (?C?IMUL)
221 PUBLIC ROM64Bit
222 PUBLIC RealTimeTM
223 PUBLIC RAM9Byte
224 PUBLIC DS18B20_ReadTM
225 PUBLIC DS18B20_WaitDQ
226 PUBLIC DS18B20_Start
227 PUBLIC DS18B20_Read
228 PUBLIC _DS18B20_Write
229 PUBLIC DS18B20_Initial
230
---- 231 RSEG ?DT?DS18B20_ReadTM?DS18B20
0000 232 ?DS18B20_ReadTM?BYTE:
0000 233 j?549: DS 2
234
---- 235 RSEG ?DT?DS18B20
0000 236 RAM9Byte: DS 9
0009 237 RealTimeTM: DS 4
000D 238 ROM64Bit: DS 8
239 ; #include "hardware.h"
240 ;
241 ; UCHAR ROM64Bit[8];
242 ; UCHAR RAM9Byte[9];
243 ;
244 ; RealTM RealTimeTM;
245 ;
246 ; bit DS18B20_Initial(void)
247
---- 248 RSEG ?PR?DS18B20_Initial?DS18B20
0000 249 DS18B20_Initial:
250 USING 0
251 ; SOURCE LINE # 8
252 ; {
253 ; SOURCE LINE # 9
254 ; UINT i;
255 ;
256 ; DS18B20_DQ=0;
A51 MACRO ASSEMBLER DS18B20 08/04/2006 20:17:08 PAGE 5
257 ; SOURCE LINE # 12
0000 C293 258 CLR DS18B20_DQ
259 ; i=400;
260 ; SOURCE LINE # 13
261 ;---- Variable 'i?040' assigned to Register 'R6/R7' ----
0002 7F90 262 MOV R7,#090H
0004 7E01 263 MOV R6,#01H
0006 264 ?C0001:
265 ; while(i--); //delay minimum= 480us
266 ; SOURCE LINE # 14
0006 EF 267 MOV A,R7
0007 1F 268 DEC R7
0008 AC06 269 MOV R4,AR6
000A 7001 270 JNZ ?C0059
000C 1E 271 DEC R6
000D 272 ?C0059:
000D 4C 273 ORL A,R4
000E 70F6 274 JNZ ?C0001
0010 275 ?C0002:
276 ; DS18B20_DQ=1;
277 ; SOURCE LINE # 15
0010 D293 278 SETB DS18B20_DQ
279 ; i=15;
280 ; SOURCE LINE # 16
0012 7E00 281 MOV R6,#00H
0014 7F0F 282 MOV R7,#0FH
0016 283 ?C0003:
284 ; while(i--); //delay 15~60us
285 ; SOURCE LINE # 17
0016 EF 286 MOV A,R7
0017 1F 287 DEC R7
0018 AC06 288 MOV R4,AR6
001A 7001 289 JNZ ?C0060
001C 1E 290 DEC R6
001D 291 ?C0060:
001D 4C 292 ORL A,R4
001E 70F6 293 JNZ ?C0003
0020 294 ?C0004:
295 ; i=100;
296 ; SOURCE LINE # 18
0020 7E00 297 MOV R6,#00H
0022 7F64 298 MOV R7,#064H
0024 299 ?C0005:
300 ; while(i--) //delay 60~240us
301 ; SOURCE LINE # 19
0024 EF 302 MOV A,R7
0025 1F 303 DEC R7
0026 AC06 304 MOV R4,AR6
0028 7001 305 JNZ ?C0061
002A 1E 306 DEC R6
002B 307 ?C0061:
002B 4C 308 ORL A,R4
002C 6003 309 JZ ?C0006
310 ; if(!DS18B20_DQ)
311 ; SOURCE LINE # 20
002E 2093F3 312 JB DS18B20_DQ,?C0005
313 ; break;
314 ; SOURCE LINE # 21
0031 315 ?C0006:
316 ;
317 ; if(i==0xFFFF)
318 ; SOURCE LINE # 23
0031 BEFF05 319 CJNE R6,#0FFH,?C0008
0034 BFFF02 320 CJNE R7,#0FFH,?C0008
321 ; return 0;
322 ; SOURCE LINE # 24
A51 MACRO ASSEMBLER DS18B20 08/04/2006 20:17:08 PAGE 6
0037 C3 323 CLR C
0038 22 324 RET
0039 325 ?C0008:
326 ; i=200; //delay 240us
327 ; SOURCE LINE # 25
0039 7E00 328 MOV R6,#00H
003B 7FC8 329 MOV R7,#0C8H
003D 330 ?C0010:
331 ; while(i--);
332 ; SOURCE LINE # 26
003D EF 333 MOV A,R7
003E 1F 334 DEC R7
003F AC06 335 MOV R4,AR6
0041 7001 336 JNZ ?C0062
0043 1E 337 DEC R6
0044 338 ?C0062:
0044 4C 339 ORL A,R4
0045 70F6 340 JNZ ?C0010
0047 341 ?C0011:
342 ; return 1;
343 ; SOURCE LINE # 27
0047 D3 344 SETB C
345 ; }
346 ; SOURCE LINE # 28
0048 347 ?C0009:
0048 22 348 RET
349 ; END OF DS18B20_Initial
350
351 ;
352 ; void DS18B20_Write(UCHAR Dat)
353
---- 354 RSEG ?PR?_DS18B20_Write?DS18B20
0000 355 _DS18B20_Write:
356 USING 0
357 ; SOURCE LINE # 30
358 ;---- Variable 'Dat?141' assigned to Register 'R7' ----
359 ; {
360 ; SOURCE LINE # 31
361 ; UCHAR i=0;
362 ; SOURCE LINE # 32
363 ;---- Variable 'i?142' assigned to Register 'R6' ----
364 ; UCHAR j;
365 ;
366 ; for(j=1;j<=8;j++)
367 ; SOURCE LINE # 35
368 ;---- Variable 'j?143' assigned to Register 'R5' ----
0000 7D01 369 MOV R5,#01H
0002 370 ?C0012:
371 ; {
372 ; SOURCE LINE # 36
373 ; if((Dat&0x01)==0x01)
374 ; SOURCE LINE # 37
0002 EF 375 MOV A,R7
0003 30E014 376 JNB ACC.0,?C0015
377 ; {
378 ; SOURCE LINE # 38
379 ; DS18B20_DQ=0;
380 ; SOURCE LINE # 39
0006 C293 381 CLR DS18B20_DQ
382 ; for(i=0;i<5;i++); //delay min=1us
383 ; SOURCE LINE # 40
0008 E4 384 CLR A
0009 FE 385 MOV R6,A
000A 386 ?C0016:
000A 0E 387 INC R6
000B BE05FC 388 CJNE R6,#05H,?C0016
A51 MACRO ASSEMBLER DS18B20 08/04/2006 20:17:08 PAGE 7
000E 389 ?C0017:
390 ; DS18B20_DQ=1;
391 ; SOURCE LINE # 41
000E D293 392 SETB DS18B20_DQ
393 ; i=15;
394 ; SOURCE LINE # 42
0010 7E0F 395 MOV R6,#0FH
0012 396 ?C0019:
397 ; while(i--); //delay max=60us
398 ; SOURCE LINE # 43
0012 AC06 399 MOV R4,AR6
0014 1E 400 DEC R6
0015 EC 401 MOV A,R4
0016 6014 402 JZ ?C0021
0018 80F8 403 SJMP ?C0019
404 ; }
405 ; SOURCE LINE # 44
001A 406 ?C0015:
407 ; else
408 ; {
409 ; SOURCE LINE # 46
410 ; DS18B20_DQ=0;
411 ; SOURCE LINE # 47
001A C293 412 CLR DS18B20_DQ
413 ; i=100; //delay min=60us ma
x=120us
414 ; SOURCE LINE # 48
001C 7E64 415 MOV R6,#064H
001E 416 ?C0022:
417 ; while(i--);
418 ; SOURCE LINE # 49
001E AC06 419 MOV R4,AR6
0020 1E 420 DEC R6
0021 EC 421 MOV A,R4
0022 70FA 422 JNZ ?C0022
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -