📄 main.lst
字号:
180 004c 90E0 push r17
181 push r28
182 push r29
183 /* prologue: function */
184 /* frame size = 0 */
186 .LM1:
187 ldi r24,lo8(-1)
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 (
188 24
190 004e 20E0 .LM2:
191 0050 38E4 out 52-32,r24
193 0052 F901 .LM3:
194 out 56-32,r24
196 0054 3197 .LM4:
197 0056 01F4 call softuart_init
199 .LM5:
200 ldi r24,lo8(__c.2022)
201 ldi r25,hi8(__c.2022)
202 call softuart_puts_progmem2
204 .LM6:
205 call softuart_putnewline
111:main.c **** |
112:main.c **** |-----------------------------------------------------------------------------------------
113:main.c **** | License:
114:main.c **** | This program is free software; you can redistribute it and/or modify it under
115:main.c **** | the terms of the GNU General Public License as published by the Free Software
206 .LM4-.LFBB1
207 .LM4:
208 0058 0196 call softuart_init
210 005c 9105 .LM5:
211 005e 01F4 ldi r24,lo8(__c.2022)
212 ldi r25,hi8(__c.2022)
213 call softuart_puts_progmem2
116:main.c **** ndation; either version 2 of the License, or (at your option) any later
117:main.c **** | version.
118:main.c **** | This program is distributed in the hope that it will be useful, but
119:main.c **** |
120:main.c **** | WITHOUT ANY WARRANTY;
121:main.c **** |
122:main.c **** | without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
123:main.c **** | PURPOSE. See the GNU General Public License for more details.
214 stabn 68,0,86,.LM3-.LFBB1
215 .LM3:
216 0060 80E0 out 56-32,r24
218 0064 68EE .LM4:
219 0066 73E0 call softuart_init
221 006c BC01 .LM5:
124:main.c **** eful, but
125:main.c **** |
222 r24,lo8(-1)
223 out 55-32,r24
225 0070 1906 .LM2:
226 0072 04F4 out 52-32,r24
126:main.c **** blished by the Free Software
127:main.c **** | Foundation; either version 2 of the License, or (at your option) any later
128:main.c **** | version.
227 bn 68,0,86,.LM3-.LFBB1
228 .LM3:
229 0074 D091 0000 out 56-32,r24
231 007a 8091 0000 .LM4:
232 007e 9E01 call softuart_init
234 0082 311D .LM5:
235 0084 C901 ldi r24,lo8(__c.2022)
129:main.c **** and/or modify it under
130:main.c **** | the terms of the GNU General Public License as published by the Free Software
131:main.c **** | Foundation; either version 2 of the License, or (at your option) any later
236 24
238 0086 38E0 .LM2:
239 0088 8630 out 52-32,r24
241 008c 01F4 .LM3:
132:main.c **** stribute it and/or modify it under
133:main.c **** | the terms of the GNU General Public License as published by the Free Software
242 r17
243 push r28
244 008e 80E0 push r29
245 0090 90E0 /* prologue: function */
246 0092 0E94 0000 /* frame size = 0 */
248 .LM1:
134:main.c **** ---------------------
135:main.c **** | License:
136:main.c **** | This program is free software; you can redistribute it and/or modify it under
249 4,lo8(-1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -