📄 ds18b20.lst
字号:
242 06FA 2EF9 goto l12
243 ;DS18B20.c: 22: presence=RC1;
244 06FB 3000 movlw 0
245 06FC 1887 btfsc 7,1
246 06FD 3001 movlw 1
247 06FE 00A6 movwf ?a_DS18B20_RESET
248 06FF l5
249 ;DS18B20.c: 23: }
250 06FF 08A6 movf ?a_DS18B20_RESET
251 0700 1D03 btfss 3,2
252 0701 2EE9 goto l6
253 ;DS18B20.c: 24: { unsigned char _dcnt; _dcnt =
+ (498)/((12*1000L)/(4*1000L))|1; while(--_dcnt !
+ = 0) continue; };
254 0702 30A7 movlw -89
255 0703 00A7 movwf ?a_DS18B20_RESET+1
256 0704 l15
257 0704 0BA7 decfsz ?a_DS18B20_RESET+1
258 0705 2F04 goto l15
259 ;DS18B20.c: 26: if(RC1)
260 0706 1C87 btfss 7,1
261 0707 2F0A goto l17
262 ;DS18B20.c: 27: presence = 0;
263 0708 01A6 clrf ?a_DS18B20_RESET
264 ;DS18B20.c: 28: else
265 0709 2F0C goto l2
266 070A l17
267 ;DS18B20.c: 29: presence = 1;
268 070A 01A6 clrf ?a_DS18B20_RESET
269 070B 0AA6 incf ?a_DS18B20_RESET
270 070C l2
271 ;DS18B20.c: 30: }
272 070C 08A6 movf ?a_DS18B20_RESET
273 070D 1D03 btfss 3,2
274 070E 2EFF goto l5
275 ;DS18B20.c: 31: TRISC1=1;
276 070F 1683 bsf 3,5
277 0710 1487 bsf 7,1
278 ;DS18B20.c: 32: }
279 0711 1283 bcf 3,5
280 0712 0008 return
281 ;DS18B20.c: 71: void DS18B20_READ_TEMP()
282 ;DS18B20.c: 72: {
283 0713 _DS18B20_READ_TEMP
284 ;DS18B20.c: 73: DS18B20_RESET();
285 0713 26E5 fcall _DS18B20_RESET
286 ;DS18B20.c: 74: DS18B20_WRITE_BYTE(0xCC);
287 0714 30CC movlw -52
288 0715 26BC fcall _DS18B20_WRITE_BYTE
289 ;DS18B20.c: 75: DS18B20_WRITE_BYTE(0xBE);
290 0716 30BE movlw -66
291 0717 26BC fcall _DS18B20_WRITE_BYTE
292 ;DS18B20.c: 76: temp_data[0]=DS18B20_READ_BYTE(
+ );
293 0718 2695 fcall _DS18B20_READ_BYTE
294 0719 00B1 movwf _temp_data
295 ;DS18B20.c: 77: temp_data[1]=DS18B20_READ_BYTE(
+ );
296 071A 2695 fcall _DS18B20_READ_BYTE
297 071B 00B2 movwf _temp_data+1
298 ;DS18B20.c: 78: DS18B20_RESET();
299 071C 26E5 fcall _DS18B20_RESET
300 ;DS18B20.c: 79: DS18B20_WRITE_BYTE(0xCC);
301 071D 30CC movlw -52
302 071E 26BC fcall _DS18B20_WRITE_BYTE
303 ;DS18B20.c: 80: DS18B20_WRITE_BYTE(0x44);
304 071F 3044 movlw 68
305 0720 2EBC ljmp _DS18B20_WRITE_BYTE
306
307 psect text4
308 ;DS18B20.c: 85: void work_temp()
309 ;DS18B20.c: 86: {
310 061A _work_temp
311 ; _flag2 assigned to ?a_work_temp+0
312 0000 _work_temp$flag2 set ?a_work_temp
313 ; _flag3 assigned to ?a_work_temp+1
314 0000 _work_temp$flag3 set ?a_work_temp+1
315 ; _n assigned to ?a_work_temp+2
316 0000 _work_temp$n set ?a_work_temp+2
317 ;DS18B20.c: 87: unsigned char n = 0;
318 061A 0183 clrf 3 ;select bank 0
319 061B 01A8 clrf ?a_work_temp+2
320 ;DS18B20.c: 89: unsigned char flag3 = 1,flag2 =
+ 1;
321 061C 01A7 clrf ?a_work_temp+1
322 061D 0AA7 incf ?a_work_temp+1
323 061E 01A6 clrf ?a_work_temp
324 061F 0AA6 incf ?a_work_temp
325 ;DS18B20.c: 90: if((temp_data[1]&0xf8)!= 0x00)
326 0620 0832 movf _temp_data+1,w
327 0621 39F8 andlw -8
328 0622 1903 btfsc 3,2
329 0623 2E2E goto l39
330 ;DS18B20.c: 91: {
331 0624 0932 comf _temp_data+1,w
332 0625 00B2 movwf _temp_data+1
333 ;DS18B20.c: 93: temp_data[0] = ~(temp_data[0])+
+ 1;
334 0626 0931 comf _temp_data,w
335 0627 00F0 movwf btemp
336 0628 0A70 incf btemp,w
337 0629 00B1 movwf _temp_data
338 ;DS18B20.c: 94: n = 1;
339 062A 01A8 clrf ?a_work_temp+2
340 062B 0AA8 incf ?a_work_temp+2
341 ;DS18B20.c: 95: flag = 1;
342 062C 01A3 clrf _flag
343 062D 0AA3 incf _flag
344 062E l39
345 ;DS18B20.c: 96: }
346 062E 0831 movf _temp_data,w
347 062F 00F0 movwf btemp
348 0630 01F1 clrf btemp+1
349 0631 0871 movf btemp+1,w
350 0632 3A80 xorlw 128
351 0633 00F2 movwf btemp+2
352 0634 3081 movlw 129
353 0635 0272 subwf btemp+2,w
354 0636 3000 movlw 0
355 ;set bank bits for btemp
356 0637 1903 btfsc 3,2
357 0638 0270 subwf btemp,w
358 0639 1803 btfsc 3,0
359 ;DS18B20.c: 98: {
360 063A 0AB2 incf _temp_data+1
361 ;DS18B20.c: 100: }
362 063B 0831 movf _temp_data,w
363 063C 390F andlw 15
364 063D 00B7 movwf _display+4
365 ;DS18B20.c: 102: display[0] = ditab[display[4]]
+ ;
366 063E 3000 movlw _ditab shr (0+8)
367 063F 008A movwf 10
368 0640 0837 movf _display+4,w
369 0641 2055 call ((_ditab+-1)& (0+2047))| (($)& (0+-2048))
370 0642 00B3 movwf _display
371 ;DS18B20.c: 103: doth = display[0]/10;
372 0643 300A movlw 10
373 0644 00F1 movwf btemp+1
374 0645 0833 movf _display,w
375 0646 120A 118A 27C3 fcall lbdiv
376 0649 00A1 movwf _doth
377 ;DS18B20.c: 104: dotl = display[0]%10;
378 064A 300A movlw 10
379 064B 00F1 movwf btemp+1
380 064C 0833 movf _display,w
381 064D 120A 118A 27C3 fcall lbmod
382 0650 0870 movf btemp,w
383 0651 00A2 movwf _dotl
384 ;DS18B20.c: 105: display[4] = ((temp_data[0]&0x
+ f0)>>4)|((temp_data[1]&0x07)<<4);
385 0652 0832 movf _temp_data+1,w
386 0653 3907 andlw 7
387 0654 00F0 movwf btemp
388 0655 0EF0 swapf btemp
389 0656 30F0 movlw 240
390 0657 05F0 andwf btemp
391 0658 0870 movf btemp,w
392 0659 0831 movf _temp_data,w
393 065A 39F0 andlw -16
394 065B 00F1 movwf btemp+1
395 065C 0EF1 swapf btemp+1
396 065D 300F movlw 15
397 065E 05F1 andwf btemp+1
398 065F 0871 movf btemp+1,w
399 0660 0470 iorwf btemp,w
400 0661 00B7 movwf _display+4
401 ;DS18B20.c: 106: display[3] = display[4]/100;
402 0662 3064 movlw 100
403 0663 00F1 movwf btemp+1
404 0664 0837 movf _display+4,w
405 0665 120A 118A 27C3 fcall lbdiv
406 0668 00B6 movwf _display+3
407 ;DS18B20.c: 107: display[2] = display[4]/10%10;
408 0669 300A movlw 10
409 066A 00F1 movwf btemp+1
410 066B 0837 movf _display+4,w
411 066C 120A 118A 27C3 fcall lbdiv
412 066F 00F0 movwf btemp
413 0670 300A movlw 10
414 0671 00F1 movwf btemp+1
415 0672 0870 movf btemp,w
416 0673 120A 118A 27C3 fcall lbmod
417 0676 0870 movf btemp,w
418 0677 00B5 movwf _display+2
419 ;DS18B20.c: 108: display[1] = display[4]%10;
420 0678 300A movlw 10
421 0679 00F1 movwf btemp+1
422 067A 0837 movf _display+4,w
423 067B 120A 118A 27C3 fcall lbmod
+ 120A 118A
424 0680 0870 movf btemp,w
425 0681 00B4 movwf _display+1
426 ;DS18B20.c: 109: if(!display[3])
427 0682 08B6 movf _display+3
428 0683 1D03 btfss 3,2
429 0684 2E8E goto l41
430 ;DS18B20.c: 110: {
431 0685 300A movlw 10
432 0686 00B6 movwf _display+3
433 ;DS18B20.c: 112: flag3 = 0;
434 0687 01A7 clrf ?a_work_temp+1
435 ;DS18B20.c: 113: if(!display[2])
436 0688 08B5 movf _display+2
437 0689 1D03 btfss 3,2
438 068A 2E8E goto l41
439 ;DS18B20.c: 114: {
440 068B 300A movlw 10
441 068C 00B5 movwf _display+2
442 ;DS18B20.c: 116: flag2= 0 ;
443 068D 01A6 clrf ?a_work_temp
444 ;DS18B20.c: 117: }
445 068E l41
446 ;DS18B20.c: 119: if(n)
447 068E 08A8 movf ?a_work_temp+2
448 068F 1903 btfsc 3,2
449 0690 0008 return
450 ;DS18B20.c: 120: {
451 0691 300B movlw 11
452 0692 00B6 movwf _display+3
453 ;DS18B20.c: 122: flag3 = 0;
454 0693 01A7 clrf ?a_work_temp+1
455 ;DS18B20.c: 123: }
456 0694 0008 return
457
458 psect text5
459 0000
460 0000
461 0000
462 0000
463 0000
464 0000
465 0000
466 0000
467 0000
468 0000
469 0000
470 0000
471 0000
472 0000
473 0000
474 0000
475 0000
476 0000
477 0000
478 0000
479 0000
480 0000
481 0000
482 0000
483 0000
484 0000
485 0000
486 0000
487 0000
488 0000
489 0000
490 0000
491 0000
492 0000
493 0000
494 0000
495 0000
496 0000
497 0000
498 0000
499 0000
500 0000
501 0000
502 0000
503 0000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -