📄 motor_control.lst
字号:
135 brne .L3
136 .LBE55:
137 .LBE56:
1:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** Copyright (c) 2004,2005,2007 Joerg Wunsch
3:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** Copyright (c) 2007 Florin-Viorel Petrov
4:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** All rights reserved.
5:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
6:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** Redistribution and use in source and binary forms, with or without
7:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** modification, are permitted provided that the following conditions are met:
8:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
9:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** * Redistributions of source code must retain the above copyright
10:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** notice, this list of conditions and the following disclaimer.
11:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
12:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** * Redistributions in binary form must reproduce the above copyright
13:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** notice, this list of conditions and the following disclaimer in
14:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** the documentation and/or other materials provided with the
15:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** distribution.
16:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
17:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** * Neither the name of the copyright holders nor the names of
18:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** contributors may be used to endorse or promote products derived
19:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** from this software without specific prior written permission.
20:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
21:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** POSSIBILITY OF SUCH DAMAGE. */
32:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
33:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** /* $Id: delay.h,v 1.5 2007/10/28 23:25:56 joerg_wunsch Exp $ */
34:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
35:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #ifndef _UTIL_DELAY_H_
36:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #define _UTIL_DELAY_H_ 1
37:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
38:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #include <inttypes.h>
39:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #include <util/delay_basic.h>
40:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
41:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** /** \file */
42:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** /** \defgroup util_delay <util/delay.h>: Convenience functions for busy-wait delay loops
43:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** \code
44:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #define F_CPU 1000000UL // 1 MHz
45:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** //#define F_CPU 14.7456E6
46:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #include <util/delay.h>
47:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** \endcode
48:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
49:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** \note As an alternative method, it is possible to pass the
50:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** F_CPU macro down to the compiler from the Makefile.
51:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** Obviously, in that case, no \c \#define statement should be
52:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** used.
53:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
54:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** The functions in this header file are wrappers around the basic
55:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** busy-wait functions from <util/delay_basic.h>. They are meant as
56:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** convenience functions where actual time values can be specified
57:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** rather than a number of cycles to wait for. The idea behind is
58:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** that compile-time constant expressions will be eliminated by
59:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** compiler optimization so floating-point expressions can be used
60:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** to calculate the number of delay cycles needed based on the CPU
61:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** frequency passed by the macro F_CPU.
62:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
63:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** \note In order for these functions to work as intended, compiler
64:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** optimizations <em>must</em> be enabled, and the delay time
65:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** <em>must</em> be an expression that is a known constant at
66:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** compile-time. If these requirements are not met, the resulting
67:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** delay will be much longer (and basically unpredictable), and
68:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** applications that otherwise do not use floating-point calculations
69:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** will experience severe code bloat by the floating-point library
70:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** routines linked into the application.
71:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
72:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** The functions available allow the specification of microsecond, and
73:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** millisecond delays directly, using the application-supplied macro
74:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** F_CPU as the CPU clock frequency (in Hertz).
75:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
76:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** */
77:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
78:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #if !defined(__DOXYGEN__)
79:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline));
80:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline));
81:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #endif
82:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
83:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #ifndef F_CPU
84:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** /* prevent compiler error by supplying a default */
85:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** # warning "F_CPU not defined for <util/delay.h>"
86:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** # define F_CPU 1000000UL
87:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #endif
88:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
89:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #ifndef __OPTIMIZE__
90:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** # warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
91:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** #endif
92:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
93:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** /**
94:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** \ingroup util_delay
95:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
96:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** Perform a delay of \c __us microseconds, using _delay_loop_1().
97:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
98:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** The macro F_CPU is supposed to be defined to a
99:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** constant defining the CPU clock frequency (in Hertz).
100:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
101:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** The maximal possible delay is 768 us / F_CPU in MHz.
102:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
103:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** If the user requests a delay greater than the maximal possible one,
104:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** _delay_us() will automatically call _delay_ms() instead. The user
105:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** will not be informed about this case.
106:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** */
107:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** void
108:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** _delay_us(double __us)
109:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** {
110:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** uint8_t __ticks;
111:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** double __tmp = ((F_CPU) / 3e6) * __us;
112:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** if (__tmp < 1.0)
113:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** __ticks = 1;
114:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** else if (__tmp > 255)
115:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** {
116:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** _delay_ms(__us / 1000.0);
117:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** return;
118:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** }
119:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** else
120:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** __ticks = (uint8_t)__tmp;
121:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** _delay_loop_1(__ticks);
122:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** }
123:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
124:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
125:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** /**
126:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** \ingroup util_delay
127:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
128:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** Perform a delay of \c __ms milliseconds, using _delay_loop_2().
129:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
130:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** The macro F_CPU is supposed to be defined to a
131:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** constant defining the CPU clock frequency (in Hertz).
132:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
133:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** The maximal possible delay is 262.14 ms / F_CPU in MHz.
134:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h ****
135:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** When the user request delay which exceed the maximum possible one,
136:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** _delay_ms() provides a decreased resolution functionality. In this
137:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** mode _delay_ms() will work with a resolution of 1/10 ms, providing
138:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** delays up to 6.5535 seconds (independent from CPU frequency). The
139:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** user will not be informed about decreased resolution.
140:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** */
141:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** void
142:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** _delay_ms(double __ms)
143:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** {
144:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** uint16_t __ticks;
145:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** double __tmp = ((F_CPU) / 4e3) * __ms;
146:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** if (__tmp < 1.0)
147:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** __ticks = 1;
148:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** else if (__tmp > 65535)
149:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** {
150:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** // __ticks = requested delay in 1/10 ms
151:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** __ticks = (uint16_t) (__ms * 10.0);
152:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** while(__ticks)
153:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** {
154:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** // wait 1/10 ms
155:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** _delay_loop_2(((F_CPU) / 4e3) / 10);
156:c:/winavr-20080512/lib/gcc/../../avr/include/util/delay.h **** __ticks --;
139 5,.LM7-.LFBB1
140 .LM7:
141 001e 0197 ldd r24,Y+1
142 subi r24,lo8(-(1))
143 std Y+1,r24
144 0020 01F4 .L2:
145 ldd r24,Y+1
146 cp r24,r20
147 brlo .L4
148 /* epilogue start */
150 .LM8:
151 0022 8981 pop __tmp_reg__
152 0024 8F5F pop r28
153 0026 8983 pop r29
154 ret
116:motor_control.c **** _delay_ms(1000);
117:motor_control.c **** }
159 50-.LFBB1
171 .Lscope1:
173 .global get_cheese
175 get_cheese:
177 .LM9:
178 .LFBB2:
179 push r16
180 push r17
181 push r29
182 push r28
183 push __tmp_reg__
184 in r28,__SP_L__
185 in r29,__SP_H__
118:motor_control.c ****
119:motor_control.c **** void get_cheese(void)
120:motor_control.c **** {
186 frame size = 1 */
188 .LM10:
189 0036 0F93 call uartClose
191 003a DF93 .LM11:
192 003c CF93 call getTime
193 003e 0F92 mov r17,r24
195 0042 DEB7 .LM12:
196 ldi r20,lo8(150)
197 ldi r21,hi8(150)
121:motor_control.c **** uartClose();
198 (150)
199 ldi r23,hi8(150)
200 0044 0E94 0000 ldi r24,lo8(26)
122:motor_control.c ****
123:motor_control.c **** unsigned char temp_time = getTime();
201 ll motor
202 ldi r24,lo8(1000)
203 0048 0E94 0000 ldi r25,hi8(1000)
204 004c 182F .LBB57:
124:motor_control.c ****
125:motor_control.c **** motor(0x1a, 150, 150);
205 58:
206 .LBB59:
207 004e 46E9 .LBB60:
209 0052 66E9 .Ltext6:
211 0056 8AE1 .LM13:
212 0058 0E94 0000 ldi r18,lo8(400)
213 005c 88EE ldi r19,hi8(400)
214 005e 93E0 .L8:
215 movw r30,r18
216 /* #APP */
217 ; 105 "c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h" 1
218 1: sbiw r30,1
219 brne 1b
220 ; 0 "" 2
221 /* #NOAPP */
222 .LBE60:
223 0060 20E9 .LBE59:
225 .Ltext7:
227 .LM14:
228 sbiw r24,1
230 0068 01F4 .LM15:
231 brne .L8
232 .LBE58:
233 .LBE57:
235 .Ltext8:
237 .LM16:
238 ldi r20,lo8(-1000)
239 006a 0197 ldi r21,hi8(-1000)
240 ldi r22,lo8(7400)
241 ldi r23,hi8(7400)
242 006c 01F4 ldi r24,lo8(42)
243 call motor
244 ldi r24,lo8(10000)
245 ldi r25,hi8(10000)
246 .LBB61:
126:motor_control.c **** _delay_ms(100);
127:motor_control.c ****
128:motor_control.c **** motor(0x2a, 7400, -1000);
247 -20080512/lib/gcc/../../avr/include/util/delay_basic.h",132,0,0,.Ltext9
248 .Ltext9:
250 0070 5CEF .LM17:
251 0072 68EE ldi r18,lo8(400)
252 0074 7CE1 ldi r19,hi8(400)
253 0076 8AE2 .L9:
254 0078 0E94 0000 movw r30,r18
255 007c 80E1 /* #APP */
256 007e 97E2 ; 105 "c:/winavr-20080512/lib/gcc/../../avr/include/util/delay_basic.h" 1
257 1: sbiw r30,1
258 brne 1b
259 ; 0 "" 2
260 /* #NOAPP */
261 .LBE64:
262 .LBE63:
264 .Ltext10:
266 0082 31E0 .LM18:
267 sbiw r24,1
269 .LM19:
270 brne .L9
271 0086 3197 .LBE62:
272 0088 01F4 .LBE61:
274 .Ltext11:
276 .LM20:
277 ldi r20,lo8(800)
278 ldi r21,hi8(800)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -