📄 main.lst
字号:
1 .file "main.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
109 .data
110 .LC0:
111 0000 3F3F 3F20 .string "??? : ip proto "
111 3A20 6970
111 2070 726F
111 746F 2000
112 .text
114 .global main
116 main:
1:main.c **** /*
2:main.c **** ,-----------------------------------------------------------------------------------------.
3:main.c **** | main
4:main.c **** |-----------------------------------------------------------------------------------------
5:main.c **** | this file implements the main loop of the whole webserver project
6:main.c **** |
7:main.c **** | Author : {{removed according to contest rules}}
8:main.c **** | -> circuitcellar.com avr design contest 2006
9:main.c **** | -> Entry #AT2616
10:main.c **** |
11:main.c **** |-----------------------------------------------------------------------------------------
12:main.c **** | License:
13:main.c **** | This program is free software; you can redistribute it and/or modify it under
14:main.c **** | the terms of the GNU General Public License as published by the Free Software
15:main.c **** | Foundation; either version 2 of the License, or (at your option) any later
16:main.c **** | version.
17:main.c **** | This program is distributed in the hope that it will be useful, but
18:main.c **** |
19:main.c **** | WITHOUT ANY WARRANTY;
20:main.c **** |
21:main.c **** | without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
22:main.c **** | PURPOSE. See the GNU General Public License for more details.
23:main.c **** |
24:main.c **** | You should have received a copy of the GNU General Public License along with
25:main.c **** | this program; if not, write to the Free Software Foundation, Inc., 51
26:main.c **** | Franklin St, Fifth Floor, Boston, MA 02110, USA
27:main.c **** |
28:main.c **** | http://www.gnu.de/gpl-ger.html
29:main.c **** `-----------------------------------------------------------------------------------------*/
30:main.c **** #include "main.h"
31:main.c ****
32:main.c **** #define F_CPU F_OSC
33:main.c ****
34:main.c **** #include <avr/io.h>
35:main.c **** #include <stdint.h>
36:main.c **** #include <stdio.h>
37:main.c **** #include <avr/delay.h>
38:main.c **** #include <stdint.h>
39:main.c **** #include "update/flashloader.h"
40:main.c ****
41:main.c ****
42:main.c **** #include "io/dataflash.h"
43:main.c **** #include "io/plot.h"
44:main.c **** #include "io/filesystem.h"
45:main.c **** #include "io/lm75.h"
46:main.c **** #include "io/mca25.h"
47:main.c **** #include "io/mpf10.h"
48:main.c **** #include "io/led.h"
49:main.c **** #include "io/softuart.h"
50:main.c ****
51:main.c **** //ACTIVATE DEBUG by editing this file:
52:main.c **** #include "debug.h"
53:main.c ****
54:main.c **** #include "io/clock.h"
55:main.c **** #include "io/plot.h"
56:main.c **** #include "io/servo.h"
57:main.c ****
58:main.c **** #include "net/mynic.h"
59:main.c **** #include "net/icmp.h"
60:main.c **** #include "net/ip.h"
61:main.c **** #include "net/arp.h"
62:main.c **** #include "net/tcp.h"
63:main.c **** #include "net/httpd.h"
64:main.c **** #include "net/ntp_client.h"
65:main.c **** #include "net/http_client.h"
66:main.c **** #include "net/base64.h"
67:main.c **** #include "util/string.h"
68:main.c **** #include "main.h"
69:main.c ****
70:main.c **** //interrupt:
71:main.c **** #include <avr/interrupt.h>
72:main.c **** #include <inttypes.h>
73:main.c **** #include <avr/signal.h>
74:main.c **** #define NOP() asm volatile ("nop"::);
75:main.c **** #include "config.h"
76:main.c ****
77:main.c **** //global ethernetbuffer
78:main.c **** unsigned char buffer[NIC_BUFFERSIZE];
79:main.c ****
80:main.c **** int main(void){
117 1
118 .LM0:
119 .LFBB1:
120 0000 EF92 push r14
121 0002 FF92 push r15
122 0004 1F93 push r17
123 0006 CF93 push r28
124 0008 DF93 push r29
125 /* prologue: function */
126 /* frame size = 0 */
81:main.c **** ;
82:main.c **** PORTB = 0xFF;
83:main.c ****
84:main.c **** //flash status led 5 times
85:main.c **** led_init();
127 ,0,85,.LM1-.LFBB1
128 .LM1:
129 000a 8FEF ldi r24,lo8(-1)
130 000c 87BB out 55-32,r24
86:main.c **** ;
131 abn 68,0,86,.LM2-.LFBB1
132 .LM2:
133 000e 84BB out 52-32,r24
87:main.c **** NOP() asm volatile ("nop"::);
134 tabn 68,0,87,.LM3-.LFBB1
135 .LM3:
136 0010 88BB out 56-32,r24
88:main.c **** .h"
89:main.c **** #include "main.h"
90:main.c ****
137 tabn 68,0,90,.LM4-.LFBB1
138 .LM4:
139 0012 A39A sbi 52-32,3
140 0014 20E0 ldi r18,lo8(0)
141 0016 30E0 ldi r19,hi8(0)
142 .LBB30:
143 .LBB31:
144 .LBB32:
145 .LBB33:
146 .LBB34:
147 .LBB35:
149 .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 **** */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -