📄 ds18b20.lst
字号:
224 .LBE24:
225 .LBE23:
226 .LBE22:
227 /* epilogue: frame size=0 */
228 0032 0895 ret
229 /* epilogue end (size=1) */
230 /* function ack_ds18b20 size 10 (9) */
235 .Lscope1:
237 .global read_ds18b20
239 read_ds18b20:
241 .Ltext6:
17:ds18b20.c **** _delay_us(38);//20us
18:ds18b20.c **** }
19:ds18b20.c **** uchar read_ds18b20(void)
20:ds18b20.c **** {
243 .LM13:
244 /* prologue: frame size=0 */
245 0034 CF93 push r28
246 0036 DF93 push r29
247 /* prologue end (size=2) */
21:ds18b20.c **** uchar data=0;
249 .LM14:
250 0038 90E0 ldi r25,lo8(0)
251 003a A2E0 ldi r26,lo8(2)
252 003c B0E0 ldi r27,hi8(2)
253 003e C0E0 ldi r28,hlo8(2)
254 0040 D0E0 ldi r29,hhi8(2)
255 0042 24E0 ldi r18,lo8(4)
256 0044 30E0 ldi r19,hi8(4)
257 0046 40E0 ldi r20,hlo8(4)
258 0048 50E0 ldi r21,hhi8(4)
259 004a 792F mov r23,r25
260 004c 67E0 ldi r22,lo8(7)
261 .L86:
22:ds18b20.c **** uchar i=0;
23:ds18b20.c **** for(i=0;i<8;i++)
24:ds18b20.c **** {
25:ds18b20.c **** data>>=1;
263 .LM15:
264 004e 9695 lsr r25
26:ds18b20.c **** clr_ds18b20_dq();
266 .LM16:
267 0050 AD98 cbi 53-0x20,5
268 .LBB26:
269 .LBB27:
270 .LBB28:
271 .LBB29:
273 .Ltext7:
275 .LM17:
276 0052 8A2F mov r24,r26
277 /* #APP */
278 0054 8A95 1: dec r24
279 0056 F1F7 brne 1b
280 /* #NOAPP */
281 .LBE29:
282 .LBE28:
283 .LBE27:
284 .LBE26:
286 .Ltext8:
27:ds18b20.c **** _delay_us(1);//1us
28:ds18b20.c **** set_ds18b20_dq();
288 .LM18:
289 0058 AD9A sbi 53-0x20,5
290 .LBB30:
291 .LBB31:
292 .LBB32:
293 .LBB33:
295 .Ltext9:
297 .LM19:
298 005a 822F mov r24,r18
299 /* #APP */
300 005c 8A95 1: dec r24
301 005e F1F7 brne 1b
302 /* #NOAPP */
303 .LBE33:
304 .LBE32:
305 .LBE31:
306 .LBE30:
308 .Ltext10:
29:ds18b20.c **** _delay_us(2);//2us
30:ds18b20.c **** if(in_ds18b20_dq()) data|=0x80;
310 .LM20:
311 0060 9D99 sbic 51-0x20,5
312 0062 9068 ori r25,lo8(-128)
313 .L89:
314 .LBB34:
315 .LBB35:
316 .LBB36:
317 .LBB37:
319 .Ltext11:
321 .LM21:
322 0064 872F mov r24,r23
323 /* #APP */
324 0066 8A95 1: dec r24
325 0068 F1F7 brne 1b
326 /* #NOAPP */
327 .LBE37:
328 .LBE36:
329 .LBE35:
330 .LBE34:
332 .Ltext12:
334 .LM22:
335 006a 6150 subi r22,lo8(-(-1))
336 006c 67FF sbrs r22,7
337 006e EFCF rjmp .L86
31:ds18b20.c **** _delay_us(118);//60us
32:ds18b20.c **** }
33:ds18b20.c **** return(data);
34:ds18b20.c **** }
339 .LM23:
340 0070 892F mov r24,r25
341 0072 9927 clr r25
342 /* epilogue: frame size=0 */
343 0074 DF91 pop r29
344 0076 CF91 pop r28
345 0078 0895 ret
346 /* epilogue end (size=3) */
347 /* function read_ds18b20 size 42 (37) */
365 .Lscope2:
368 .global write_ds18b20
370 write_ds18b20:
35:ds18b20.c **** void write_ds18b20(uchar data)
36:ds18b20.c **** {
372 .LM24:
373 /* prologue: frame size=0 */
374 /* prologue end (size=0) */
375 007a 982F mov r25,r24
376 007c 22E2 ldi r18,lo8(34)
377 007e 30E0 ldi r19,hi8(34)
378 0080 40E0 ldi r20,hlo8(34)
379 0082 50E0 ldi r21,hhi8(34)
380 0084 60E0 ldi r22,lo8(0)
381 0086 77E0 ldi r23,lo8(7)
382 .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){
384 .LM25:
385 0088 90FF sbrs r25,0
386 008a 07C0 rjmp .L94
41:ds18b20.c **** clr_ds18b20_dq();
388 .LM26:
389 008c AD98 cbi 53-0x20,5
390 .LBB38:
391 .LBB39:
392 .LBB40:
393 .LBB41:
395 .Ltext13:
397 .LM27:
398 008e 822F mov r24,r18
399 /* #APP */
400 0090 8A95 1: dec r24
401 0092 F1F7 brne 1b
402 /* #NOAPP */
403 .LBE41:
404 .LBE40:
405 .LBE39:
406 .LBE38:
408 .Ltext14:
42:ds18b20.c **** _delay_us(14);//8us
43:ds18b20.c **** set_ds18b20_dq();
410 .LM28:
411 0094 AD9A sbi 53-0x20,5
412 .LBB42:
413 .LBB43:
414 .LBB44:
415 .LBB45:
417 .Ltext15:
419 .LM29:
420 0096 862F mov r24,r22
421 0098 06C0 rjmp .L131
422 .L94:
423 .LBE45:
424 .LBE44:
425 .LBE43:
426 .LBE42:
428 .Ltext16:
44:ds18b20.c **** _delay_us(108);//55us
45:ds18b20.c **** }
46:ds18b20.c **** else
47:ds18b20.c **** {
48:ds18b20.c **** clr_ds18b20_dq();
430 .LM30:
431 009a AD98 cbi 53-0x20,5
432 .LBB46:
433 .LBB47:
434 .LBB48:
435 .LBB49:
437 .Ltext17:
439 .LM31:
440 009c 862F mov r24,r22
441 /* #APP */
442 009e 8A95 1: dec r24
443 00a0 F1F7 brne 1b
444 /* #NOAPP */
445 .LBE49:
446 .LBE48:
447 .LBE47:
448 .LBE46:
450 .Ltext18:
49:ds18b20.c **** _delay_us(108);//55us
50:ds18b20.c **** set_ds18b20_dq();
452 .LM32:
453 00a2 AD9A sbi 53-0x20,5
454 .LBB50:
455 .LBB51:
456 .LBB52:
457 .LBB53:
459 .Ltext19:
461 .LM33:
462 00a4 822F mov r24,r18
463 .L131:
464 /* #APP */
465 00a6 8A95 1: dec r24
466 00a8 F1F7 brne 1b
467 /* #NOAPP */
468 .LBE53:
469 .LBE52:
470 .LBE51:
471 .LBE50:
473 .Ltext20:
51:ds18b20.c **** _delay_us(14);//8us
52:ds18b20.c **** }
53:ds18b20.c **** data>>=1;
475 .LM34:
476 00aa 9695 lsr r25
478 .LM35:
479 00ac 7150 subi r23,lo8(-(-1))
480 00ae 77FF sbrs r23,7
481 00b0 EBCF rjmp .L128
482 /* epilogue: frame size=0 */
483 00b2 0895 ret
484 /* epilogue end (size=1) */
485 /* function write_ds18b20 size 35 (34) */
505 .Lscope3:
507 .global convert_ds18b20
509 convert_ds18b20:
54:ds18b20.c **** }
55:ds18b20.c **** }
56:ds18b20.c **** void convert_ds18b20(void)
57:ds18b20.c **** {
511 .LM36:
512 /* prologue: frame size=0 */
513 /* prologue end (size=0) */
58:ds18b20.c **** reset_ds18b20();
515 .LM37:
516 00b4 A5DF rcall reset_ds18b20
59:ds18b20.c **** ack_ds18b20();
518 .LM38:
519 00b6 B6DF rcall ack_ds18b20
520 .LBB54:
521 .LBB55:
523 .Ltext21:
146:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** _delay_loop_1(__ticks);
147:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** }
148:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
149:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
150:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /**
151:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** \ingroup avr_delay
152:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
153:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Perform a delay of \c __ms milliseconds, using _delay_loop_2().
154:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
155:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** The macro F_CPU is supposed to be defined to a
156:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** constant defining the CPU clock frequency (in Hertz).
157:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
158:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** The maximal possible delay is 262.14 ms / F_CPU in MHz.
159:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
160:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** static __inline__ void
161:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** _delay_ms(double __ms)
162:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** {
163:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** uint16_t __ticks;
164:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** double __tmp = ((F_CPU) / 4e3) * __ms;
165:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** if (__tmp < 1.0)
166:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __ticks = 1;
167:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** else if (__tmp > 65535)
168:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __ticks = 0; /* i.e. 65536 */
169:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** else
170:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __ticks = (uint16_t)__tmp;
525 .LM39:
526 00b8 83E3 ldi r24,lo8(1843)
527 00ba 97E0 ldi r25,hi8(1843)
528 .LBB56:
529 .LBB57:
531 .LM40:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -