📄 enc28j60.lst
字号:
540 016a 0F91 pop r16
541 016c 0895 ret
546 .Lscope8:
550 .global enc28j60_send_packet
552 enc28j60_send_packet:
554 .LM77:
555 .LFBB9:
556 016e CF92 push r12
557 0170 DF92 push r13
558 0172 EF92 push r14
559 0174 FF92 push r15
560 0176 0F93 push r16
561 0178 1F93 push r17
562 017a CF93 push r28
563 017c DF93 push r29
564 /* prologue: function */
565 /* frame size = 0 */
566 017e 7C01 movw r14,r24
567 0180 8B01 movw r16,r22
569 .LM78:
570 0182 C0E0 ldi r28,lo8(0)
571 0184 D0E0 ldi r29,hi8(0)
572 .LBB77:
573 .LBB78:
574 .LBB79:
575 .LBB80:
577 .Ltext1:
1:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** Copyright (c) 2007 Joerg Wunsch
3:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** All rights reserved.
4:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
5:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** Redistribution and use in source and binary forms, with or without
6:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** modification, are permitted provided that the following conditions are met:
7:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
8:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** * Redistributions of source code must retain the above copyright
9:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer.
10:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
11:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** * Redistributions in binary form must reproduce the above copyright
12:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer in
13:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** the documentation and/or other materials provided with the
14:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** distribution.
15:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
16:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** * Neither the name of the copyright holders nor the names of
17:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** contributors may be used to endorse or promote products derived
18:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** from this software without specific prior written permission.
19:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
20:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** POSSIBILITY OF SUCH DAMAGE. */
31:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
32:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */
33:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
34:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
35:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
36:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
37:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #include <inttypes.h>
38:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
39:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /** \file */
40:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
41:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** \code
42:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #include <util/delay_basic.h>
43:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** \endcode
44:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
45:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** The functions in this header file implement simple delay loops
46:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** that perform a busy-waiting. They are typically used to
47:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** facilitate short delays in the program execution. They are
48:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** implemented as count-down loops with a well-known CPU cycle
49:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** count per loop iteration. As such, no other processing can
50:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** occur simultaneously. It should be kept in mind that the
51:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** functions described here do not disable interrupts.
52:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
53:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** In general, for long delays, the use of hardware timers is
54:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** much preferrable, as they free the CPU, and allow for
55:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** concurrent processing of other events while the timer is
56:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** running. However, in particular for very short delays, the
57:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** overhead of setting up a hardware timer is too much compared
58:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** to the overall delay time.
59:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
60:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** Two inline functions are provided for the actual delay algorithms.
61:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
62:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** */
63:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
64:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
65:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
66:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
67:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** #endif
68:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
69:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
70:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
71:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** Delay loop using an 8-bit counter \c __count, so up to 256
72:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** iterations are possible. (The value 256 would have to be passed
73:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** as 0.) The loop executes three CPU cycles per iteration, not
74:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** including the overhead the compiler needs to setup the counter
75:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** register.
76:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
77:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
78:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** can be achieved.
79:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** */
80:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** void
81:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_1(uint8_t __count)
82:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** {
83:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** __asm__ volatile (
84:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** "1: dec %0" "\n\t"
85:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** "brne 1b"
86:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** : "=r" (__count)
87:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** : "0" (__count)
88:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** );
89:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** }
90:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
91:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
92:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
93:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** Delay loop using a 16-bit counter \c __count, so up to 65536
94:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** iterations are possible. (The value 65536 would have to be
95:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** passed as 0.) The loop executes four CPU cycles per iteration,
96:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** not including the overhead the compiler requires to setup the
97:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** counter register pair.
98:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h ****
99:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
100:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** milliseconds can be achieved.
101:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** */
102:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** void
103:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_2(uint16_t __count)
104:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** {
105:c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h **** __asm__ volatile (
578 E79:
579 .LBE78:
580 0186 C12C .LBE77:
582 018a D82E .Ltext2:
584 .LM80:
585 ldi r24,lo8(31)
586 call enc28j60_read_address
587 sbrs r24,3
588 rjmp .L56
589 .LBB84:
590 .LBB83:
591 .LBB82:
592 018c 8FE1 .LBB81:
594 0192 83FF .Ltext3:
596 .LM81:
597 movw r24,r12
598 /* #APP */
599 ; 105 "c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h" 1
600 1: sbiw r24,1
601 brne 1b
602 ; 0 "" 2
603 /* #NOAPP */
604 0196 C601 .LBE81:
605 .LBE82:
606 .LBE83:
607 0198 0197 .LBE84:
609 .Ltext4:
611 .LM82:
612 adiw r28,1
613 cpi r28,50
614 cpc r29,__zero_reg__
615 brne .L57
616 .L56:
618 .LM83:
619 019c 2196 ldi r24,lo8(2)
620 019e C233 ldi r22,lo8(0)
621 01a0 D105 call enc28j60_write_address
623 .LM84:
624 ldi r24,lo8(3)
625 ldi r22,lo8(26)
626 01a4 82E0 call enc28j60_write_address
628 01a8 0E94 0000 .LM85:
629 ldi r24,lo8(6)
630 mov r22,r16
631 01ac 83E0 call enc28j60_write_address
633 01b0 0E94 0000 .LM86:
634 movw r18,r16
635 subi r18,lo8(-(6656))
636 01b4 86E0 sbci r19,hi8(-(6656))
637 01b6 602F ldi r24,lo8(7)
638 01b8 0E94 0000 mov r22,r19
639 call enc28j60_write_address
640 .LBB85:
641 01bc 9801 .LBB86:
643 01c0 364E .LM87:
644 01c2 87E0 cbi 56-32,4
646 01c6 0E94 0000 .LM88:
647 ldi r24,lo8(122)
648 out 47-32,r24
649 .L58:
651 01ca C498 .LM89:
652 sbis 46-32,7
653 rjmp .L58
655 01ce 8FB9 .LM90:
656 out 47-32,__zero_reg__
657 .L59:
659 01d0 779B .LM91:
660 01d2 00C0 sbis 46-32,7
661 rjmp .L59
663 01d4 1FB8 .LM92:
664 sbi 56-32,4
665 .LBE86:
666 .LBE85:
667 01d6 779B .LBB87:
668 01d8 00C0 .LBB88:
670 .LM93:
671 01da C49A cbi 56-32,4
673 .LM94:
674 ldi r24,lo8(122)
675 out 47-32,r24
676 .L60:
678 01dc C498 .LM95:
679 sbis 46-32,7
680 rjmp .L60
681 01de 8AE7 rjmp .L82
682 01e0 8FB9 .L63:
684 .LM96:
685 movw r30,r14
686 01e2 779B ld r24,Z
687 01e4 00C0 out 47-32,r24
688 01e6 00C0 .L62:
690 .LM97:
691 sbis 46-32,7
692 01e8 F701 rjmp .L62
694 01ec 8FB9 .LM98:
695 sec
696 adc r14,__zero_reg__
697 adc r15,__zero_reg__
698 01ee 779B subi r16,lo8(-(-1))
699 01f0 00C0 sbci r17,hi8(-(-1))
700 .L82:
702 01f2 0894 .LM99:
703 01f4 E11C cp r16,__zero_reg__
704 01f6 F11C cpc r17,__zero_reg__
705 01f8 0150 brne .L63
707 .LM100:
708 sbi 56-32,4
709 .LBE88:
710 01fc 0115 .LBE87:
711 01fe 1105 .LBB89:
712 0200 01F4 .LBB90:
714 .LM101:
715 0202 C49A cbi 56-32,4
717 .LM102:
718 ldi r24,lo8(-97)
719 out 47-32,r24
720 .L64:
722 0204 C498 .LM103:
723 sbis 46-32,7
724 rjmp .L64
726 0208 8FB9 .LM104:
727 ldi r24,lo8(-128)
728 out 47-32,r24
729 .L65:
731 020c 00C0 .LM105:
732 sbis 46-32,7
733 rjmp .L65
735 0210 8FB9 .LM106:
736 sbi 56-32,4
737 .LBE90:
738 .LBE89:
739 0212 779B .LBB91:
740 0214 00C0 .LBB92:
742 .LM107:
743 0216 C49A cbi 56-32,4
745 .LM108:
746 ldi r24,lo8(-65)
747 out 47-32,r24
748 .L66:
750 0218 C498 .LM109:
751 sbis 46-32,7
752 rjmp .L66
754 021c 8FB9 .LM110:
755 ldi r24,lo8(-128)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -