?? enc28j60.lst
字號:
537 0166 C901 movw r24,r18
538 /* epilogue start */
539 0168 1F91 pop r17
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 .LBE80:
579 .LBE79:
580 0186 89E0 .LBE78:
581 0188 C82E .LBE77:
583 018c D82E .Ltext2:
585 .LM80:
586 ldi r24,lo8(31)
587 call enc28j60_read_address
588 sbrs r24,3
589 rjmp .L56
590 .LBB84:
591 .LBB83:
592 .LBB82:
593 018e 8FE1 .LBB81:
595 0194 83FF .Ltext3:
597 .LM81:
598 movw r24,r12
599 /* #APP */
600 ; 105 "c:/winavr-20081205/lib/gcc/../../avr/include/util/delay_basic.h" 1
601 1: sbiw r24,1
602 brne 1b
603 ; 0 "" 2
604 /* #NOAPP */
605 0198 C601 .LBE81:
606 .LBE82:
607 .LBE83:
608 019a 0197 .LBE84:
610 .Ltext4:
612 .LM82:
613 adiw r28,1
614 cpi r28,50
615 cpc r29,__zero_reg__
616 brne .L57
617 .L56:
619 .LM83:
620 019e 2196 ldi r24,lo8(2)
621 01a0 C233 ldi r22,lo8(0)
622 01a2 D105 call enc28j60_write_address
624 .LM84:
625 ldi r24,lo8(3)
626 ldi r22,lo8(26)
627 01a6 82E0 call enc28j60_write_address
629 01aa 0E94 0000 .LM85:
630 ldi r24,lo8(6)
631 mov r22,r16
632 01ae 83E0 call enc28j60_write_address
634 01b2 0E94 0000 .LM86:
635 movw r18,r16
636 subi r18,lo8(-(6656))
637 01b6 86E0 sbci r19,hi8(-(6656))
638 01b8 602F ldi r24,lo8(7)
639 01ba 0E94 0000 mov r22,r19
640 call enc28j60_write_address
641 .LBB85:
642 01be 9801 .LBB86:
644 01c2 364E .LM87:
645 01c4 87E0 cbi 56-32,0
647 01c8 0E94 0000 .LM88:
648 ldi r24,lo8(122)
649 out 47-32,r24
650 .L58:
652 01cc C098 .LM89:
653 sbis 46-32,7
654 rjmp .L58
656 01d0 8FB9 .LM90:
657 out 47-32,__zero_reg__
658 .L59:
660 01d2 779B .LM91:
661 01d4 00C0 sbis 46-32,7
662 rjmp .L59
664 01d6 1FB8 .LM92:
665 sbi 56-32,0
666 .LBE86:
667 .LBE85:
668 01d8 779B .LBB87:
669 01da 00C0 .LBB88:
671 .LM93:
672 01dc C09A cbi 56-32,0
674 .LM94:
675 ldi r24,lo8(122)
676 out 47-32,r24
677 .L60:
679 01de C098 .LM95:
680 sbis 46-32,7
681 rjmp .L60
682 01e0 8AE7 rjmp .L82
683 01e2 8FB9 .L63:
685 .LM96:
686 movw r30,r14
687 01e4 779B ld r24,Z
688 01e6 00C0 out 47-32,r24
689 01e8 00C0 .L62:
691 .LM97:
692 sbis 46-32,7
693 01ea F701 rjmp .L62
695 01ee 8FB9 .LM98:
696 sec
697 adc r14,__zero_reg__
698 adc r15,__zero_reg__
699 01f0 779B subi r16,lo8(-(-1))
700 01f2 00C0 sbci r17,hi8(-(-1))
701 .L82:
703 01f4 0894 .LM99:
704 01f6 E11C cp r16,__zero_reg__
705 01f8 F11C cpc r17,__zero_reg__
706 01fa 0150 brne .L63
708 .LM100:
709 sbi 56-32,0
710 .LBE88:
711 01fe 0115 .LBE87:
712 0200 1105 .LBB89:
713 0202 01F4 .LBB90:
715 .LM101:
716 0204 C09A cbi 56-32,0
718 .LM102:
719 ldi r24,lo8(-97)
720 out 47-32,r24
721 .L64:
723 0206 C098 .LM103:
724 sbis 46-32,7
725 rjmp .L64
727 020a 8FB9 .LM104:
728 ldi r24,lo8(-128)
729 out 47-32,r24
730 .L65:
732 020e 00C0 .LM105:
733 sbis 46-32,7
734 rjmp .L65
736 0212 8FB9 .LM106:
737 sbi 56-32,0
738 .LBE90:
739 .LBE89:
740 0214 779B .LBB91:
741 0216 00C0 .LBB92:
743 .LM107:
744 0218 C09A cbi 56-32,0
746 .LM108:
747 ldi r24,lo8(-65)
748 out 47-32,r24
749 .L66:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -