📄 ds18b20.lst
字号:
233 .LM11:
234 002c 8DE5 ldi r24,lo8(93)
235 .LBB24:
236 .LBB25:
238 .LM12:
239 /* #APP */
240 002e 8A95 1: dec r24
241 0030 F1F7 brne 1b
242 /* #NOAPP */
243 .LBE25:
244 .LBE24:
245 .LBE23:
246 .LBE22:
247 /* epilogue: frame size=0 */
248 0032 0895 ret
249 /* epilogue end (size=1) */
250 /* function ack_ds18b20 size 10 (9) */
255 .Lscope1:
257 .global read_ds18b20
259 read_ds18b20:
261 .Ltext6:
17:ds18b20.c **** _delay_us(38);//20us
18:ds18b20.c **** }
19:ds18b20.c **** uchar read_ds18b20(void)
20:ds18b20.c **** {
263 .LM13:
264 /* prologue: frame size=0 */
265 0034 CF93 push r28
266 0036 DF93 push r29
267 /* prologue end (size=2) */
21:ds18b20.c **** uchar data=0;
269 .LM14:
270 0038 90E0 ldi r25,lo8(0)
271 003a A2E0 ldi r26,lo8(2)
272 003c B0E0 ldi r27,hi8(2)
273 003e C0E0 ldi r28,hlo8(2)
274 0040 D0E0 ldi r29,hhi8(2)
275 0042 24E0 ldi r18,lo8(4)
276 0044 30E0 ldi r19,hi8(4)
277 0046 40E0 ldi r20,hlo8(4)
278 0048 50E0 ldi r21,hhi8(4)
279 004a 792F mov r23,r25
280 004c 67E0 ldi r22,lo8(7)
281 .L86:
22:ds18b20.c **** uchar i=0;
23:ds18b20.c **** for(i=0;i<8;i++)
24:ds18b20.c **** {
25:ds18b20.c **** data>>=1;
283 .LM15:
284 004e 9695 lsr r25
26:ds18b20.c **** clr_ds18b20_dq();
286 .LM16:
287 0050 AD98 cbi 53-0x20,5
288 .LBB26:
289 .LBB27:
290 .LBB28:
291 .LBB29:
293 .Ltext7:
295 .LM17:
296 0052 8A2F mov r24,r26
297 /* #APP */
298 0054 8A95 1: dec r24
299 0056 F1F7 brne 1b
300 /* #NOAPP */
301 .LBE29:
302 .LBE28:
303 .LBE27:
304 .LBE26:
306 .Ltext8:
27:ds18b20.c **** _delay_us(1);//1us
28:ds18b20.c **** set_ds18b20_dq();
308 .LM18:
309 0058 AD9A sbi 53-0x20,5
310 .LBB30:
311 .LBB31:
312 .LBB32:
313 .LBB33:
315 .Ltext9:
317 .LM19:
318 005a 822F mov r24,r18
319 /* #APP */
320 005c 8A95 1: dec r24
321 005e F1F7 brne 1b
322 /* #NOAPP */
323 .LBE33:
324 .LBE32:
325 .LBE31:
326 .LBE30:
328 .Ltext10:
29:ds18b20.c **** _delay_us(2);//2us
30:ds18b20.c **** if(in_ds18b20_dq()) data|=0x80;
330 .LM20:
331 0060 9D99 sbic 51-0x20,5
332 0062 9068 ori r25,lo8(-128)
333 .L89:
334 .LBB34:
335 .LBB35:
336 .LBB36:
337 .LBB37:
339 .Ltext11:
341 .LM21:
342 0064 872F mov r24,r23
343 /* #APP */
344 0066 8A95 1: dec r24
345 0068 F1F7 brne 1b
346 /* #NOAPP */
347 .LBE37:
348 .LBE36:
349 .LBE35:
350 .LBE34:
352 .Ltext12:
354 .LM22:
355 006a 6150 subi r22,lo8(-(-1))
356 006c 67FF sbrs r22,7
357 006e EFCF rjmp .L86
31:ds18b20.c **** _delay_us(118);//60us
32:ds18b20.c **** }
33:ds18b20.c **** return(data);
34:ds18b20.c **** }
359 .LM23:
360 0070 892F mov r24,r25
361 0072 9927 clr r25
362 /* epilogue: frame size=0 */
363 0074 DF91 pop r29
364 0076 CF91 pop r28
365 0078 0895 ret
366 /* epilogue end (size=3) */
367 /* function read_ds18b20 size 42 (37) */
385 .Lscope2:
388 .global write_ds18b20
390 write_ds18b20:
35:ds18b20.c **** void write_ds18b20(uchar data)
36:ds18b20.c **** {
392 .LM24:
393 /* prologue: frame size=0 */
394 /* prologue end (size=0) */
395 007a 982F mov r25,r24
396 007c 22E2 ldi r18,lo8(34)
397 007e 30E0 ldi r19,hi8(34)
398 0080 40E0 ldi r20,hlo8(34)
399 0082 50E0 ldi r21,hhi8(34)
400 0084 60E0 ldi r22,lo8(0)
401 0086 77E0 ldi r23,lo8(7)
402 .L128:
37:ds18b20.c **** uchar i=0;
38:ds18b20.c **** for(i=0;i<8;i++)
39:ds18b20.c **** {
40:ds18b20.c **** if(data&0x01){
404 .LM25:
405 0088 90FF sbrs r25,0
406 008a 07C0 rjmp .L94
41:ds18b20.c **** clr_ds18b20_dq();
408 .LM26:
409 008c AD98 cbi 53-0x20,5
410 .LBB38:
411 .LBB39:
412 .LBB40:
413 .LBB41:
415 .Ltext13:
417 .LM27:
418 008e 822F mov r24,r18
419 /* #APP */
420 0090 8A95 1: dec r24
421 0092 F1F7 brne 1b
422 /* #NOAPP */
423 .LBE41:
424 .LBE40:
425 .LBE39:
426 .LBE38:
428 .Ltext14:
42:ds18b20.c **** _delay_us(14);//8us
43:ds18b20.c **** set_ds18b20_dq();
430 .LM28:
431 0094 AD9A sbi 53-0x20,5
432 .LBB42:
433 .LBB43:
434 .LBB44:
435 .LBB45:
437 .Ltext15:
439 .LM29:
440 0096 862F mov r24,r22
441 0098 06C0 rjmp .L131
442 .L94:
443 .LBE45:
444 .LBE44:
445 .LBE43:
446 .LBE42:
448 .Ltext16:
44:ds18b20.c **** _delay_us(108);//55us
45:ds18b20.c **** }
46:ds18b20.c **** else
47:ds18b20.c **** {
48:ds18b20.c **** clr_ds18b20_dq();
450 .LM30:
451 009a AD98 cbi 53-0x20,5
452 .LBB46:
453 .LBB47:
454 .LBB48:
455 .LBB49:
457 .Ltext17:
459 .LM31:
460 009c 862F mov r24,r22
461 /* #APP */
462 009e 8A95 1: dec r24
463 00a0 F1F7 brne 1b
464 /* #NOAPP */
465 .LBE49:
466 .LBE48:
467 .LBE47:
468 .LBE46:
470 .Ltext18:
49:ds18b20.c **** _delay_us(108);//55us
50:ds18b20.c **** set_ds18b20_dq();
472 .LM32:
473 00a2 AD9A sbi 53-0x20,5
474 .LBB50:
475 .LBB51:
476 .LBB52:
477 .LBB53:
479 .Ltext19:
481 .LM33:
482 00a4 822F mov r24,r18
483 .L131:
484 /* #APP */
485 00a6 8A95 1: dec r24
486 00a8 F1F7 brne 1b
487 /* #NOAPP */
488 .LBE53:
489 .LBE52:
490 .LBE51:
491 .LBE50:
493 .Ltext20:
51:ds18b20.c **** _delay_us(14);//8us
52:ds18b20.c **** }
53:ds18b20.c **** data>>=1;
495 .LM34:
496 00aa 9695 lsr r25
498 .LM35:
499 00ac 7150 subi r23,lo8(-(-1))
500 00ae 77FF sbrs r23,7
501 00b0 EBCF rjmp .L128
502 /* epilogue: frame size=0 */
503 00b2 0895 ret
504 /* epilogue end (size=1) */
505 /* function write_ds18b20 size 35 (34) */
525 .Lscope3:
527 .global convert_ds18b20
529 convert_ds18b20:
54:ds18b20.c **** }
55:ds18b20.c **** }
56:ds18b20.c **** void convert_ds18b20(void)
57:ds18b20.c **** {
531 .LM36:
532 /* prologue: frame size=0 */
533 /* prologue end (size=0) */
58:ds18b20.c **** reset_ds18b20();
535 .LM37:
536 00b4 A5DF rcall reset_ds18b20
59:ds18b20.c **** ack_ds18b20();
538 .LM38:
539 00b6 B6DF rcall ack_ds18b20
540 .LBB54:
541 .LBB55:
543 .Ltext21:
161:C:/WinAVR/avr/include/util/delay.h **** _delay_loop_1(__ticks);
162:C:/WinAVR/avr/include/util/delay.h **** }
163:C:/WinAVR/avr/include/util/delay.h ****
164:C:/WinAVR/avr/include/util/delay.h ****
165:C:/WinAVR/avr/include/util/delay.h **** /**
166:C:/WinAVR/avr/include/util/delay.h **** \ingroup util_delay
167:C:/WinAVR/avr/include/util/delay.h ****
168:C:/WinAVR/avr/include/util/delay.h **** Perform a delay of \c __ms milliseconds, using _delay_loop_2().
169:C:/WinAVR/avr/include/util/delay.h ****
170:C:/WinAVR/avr/include/util/delay.h **** The macro F_CPU is supposed to be defined to a
171:C:/WinAVR/avr/include/util/delay.h **** constant defining the CPU clock frequency (in Hertz).
172:C:/WinAVR/avr/include/util/delay.h ****
173:C:/WinAVR/avr/include/util/delay.h **** The maximal possible delay is 262.14 ms / F_CPU in MHz.
174:C:/WinAVR/avr/include/util/delay.h **** */
175:C:/WinAVR/avr/include/util/delay.h **** void
176:C:/WinAVR/avr/include/util/delay.h **** _delay_ms(double __ms)
177:C:/WinAVR/avr/include/util/delay.h **** {
178:C:/WinAVR/avr/include/util/delay.h **** uint16_t __ticks;
179:C:/WinAVR/avr/include/util/delay.h **** double __tmp = ((F_CPU) / 4e3) * __ms;
180:C:/WinAVR/avr/include/util/delay.h **** if (__tmp < 1.0)
181:C:/WinAVR/avr/include/util/delay.h **** __ticks = 1;
182:C:/WinAVR/avr/include/util/delay.h **** else if (__tmp > 65535)
183:C:/WinAVR/avr/include/util/delay.h **** __ticks = 0; /* i.e. 65536 */
184:C:/WinAVR/avr/include/util/delay.h **** else
185:C:/WinAVR/avr/include/util/delay.h **** __ticks = (uint16_t)__tmp;
545 .LM39:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -