568 lines
21 KiB
Plaintext
568 lines
21 KiB
Plaintext
1 .file "timer.c"
|
|
2 __SREG__ = 0x3f
|
|
3 __SP_H__ = 0x3e
|
|
4 __SP_L__ = 0x3d
|
|
5 __tmp_reg__ = 0
|
|
6 __zero_reg__ = 1
|
|
7 .global __do_copy_data
|
|
8 .global __do_clear_bss
|
|
9 .text
|
|
10 .Ltext0:
|
|
11 .global timer_init
|
|
13 timer_init:
|
|
14 .LFB0:
|
|
15 .file 1 "timer.c"
|
|
1:timer.c **** /*
|
|
2:timer.c **** * Low resolution implementation of timer using a 8 bit clock with prescaler,
|
|
3:timer.c **** * etc. Clicks approximately every millisecond. Microseconds are not available,
|
|
4:timer.c **** * and any queries to the function will just return milliseconds * 1000.
|
|
5:timer.c **** * You can use this file when you don't need high resolution timing, and don't care
|
|
6:timer.c **** * about slight clock drift, inaccuracy, etc. For timing most human-related activities,
|
|
7:timer.c **** * though, it should be more than sufficient.
|
|
8:timer.c **** */
|
|
9:timer.c **** #include "timer.h"
|
|
10:timer.c ****
|
|
11:timer.c **** static volatile uint64_t _timer_millis;
|
|
12:timer.c ****
|
|
13:timer.c **** /*
|
|
14:timer.c **** * Initializes the timer, and resets the timer count to 0. Sets up the ISRs
|
|
15:timer.c **** * linked with timer0.
|
|
16:timer.c **** */
|
|
17:timer.c **** void timer_init(){
|
|
16 .loc 1 17 0
|
|
17 /* prologue: function */
|
|
18 /* frame size = 0 */
|
|
19 /* stack size = 0 */
|
|
20 .L__stack_usage = 0
|
|
18:timer.c **** //Set up the timer to run at F_CPU / 256, in normal mode (we reset TCNT0 in the ISR)
|
|
19:timer.c **** TCCR0A = 0x0;
|
|
21 .loc 1 19 0
|
|
22 0000 14BC out 68-0x20,__zero_reg__
|
|
20:timer.c **** TCCR0B |= _BV(CS02);
|
|
23 .loc 1 20 0
|
|
24 0002 85B5 in r24,69-0x20
|
|
25 0004 8460 ori r24,lo8(4)
|
|
26 0006 85BD out 69-0x20,r24
|
|
21:timer.c ****
|
|
22:timer.c **** //Set compare value to be F_CPU / 1000 -- fire interrupt every millisecond
|
|
23:timer.c **** OCR0A = F_CPU / 256 / 1000;
|
|
27 .loc 1 23 0
|
|
28 0008 8EE3 ldi r24,lo8(62)
|
|
29 000a 87BD out 71-0x20,r24
|
|
24:timer.c ****
|
|
25:timer.c **** //Enable compare interrupt
|
|
26:timer.c **** TIMSK0 = _BV(OCIE0A);
|
|
30 .loc 1 26 0
|
|
31 000c 82E0 ldi r24,lo8(2)
|
|
32 000e 8093 6E00 sts 110,r24
|
|
27:timer.c ****
|
|
28:timer.c **** //Reset count variables
|
|
29:timer.c **** _timer_millis = 0;
|
|
33 .loc 1 29 0
|
|
34 0012 1092 0000 sts _timer_millis,__zero_reg__
|
|
35 0016 1092 0000 sts _timer_millis+1,__zero_reg__
|
|
36 001a 1092 0000 sts _timer_millis+2,__zero_reg__
|
|
37 001e 1092 0000 sts _timer_millis+3,__zero_reg__
|
|
38 0022 1092 0000 sts _timer_millis+4,__zero_reg__
|
|
39 0026 1092 0000 sts _timer_millis+5,__zero_reg__
|
|
40 002a 1092 0000 sts _timer_millis+6,__zero_reg__
|
|
41 002e 1092 0000 sts _timer_millis+7,__zero_reg__
|
|
30:timer.c ****
|
|
31:timer.c **** //Enable interrupts if the NO_INTERRUPT_ENABLE define is not set. If it is, you need to call sei(
|
|
32:timer.c **** #ifndef NO_INTERRUPT_ENABLE
|
|
33:timer.c **** sei();
|
|
42 .loc 1 33 0
|
|
43 /* #APP */
|
|
44 ; 33 "timer.c" 1
|
|
45 0032 7894 sei
|
|
46 ; 0 "" 2
|
|
34:timer.c **** #endif
|
|
35:timer.c ****
|
|
36:timer.c **** DDRB = 0xFF;
|
|
47 .loc 1 36 0
|
|
48 /* #NOAPP */
|
|
49 0034 8FEF ldi r24,lo8(-1)
|
|
50 0036 84B9 out 36-0x20,r24
|
|
51 /* epilogue start */
|
|
37:timer.c **** }
|
|
52 .loc 1 37 0
|
|
53 0038 0895 ret
|
|
54 .LFE0:
|
|
56 .global timer_millis
|
|
58 timer_millis:
|
|
59 .LFB1:
|
|
38:timer.c ****
|
|
39:timer.c **** /*
|
|
40:timer.c **** * Returns the number of milliseconds which have elapsed since the
|
|
41:timer.c **** * last time timer_init() was called. Overflows after about 49 days.
|
|
42:timer.c **** */
|
|
43:timer.c **** uint64_t timer_millis(){
|
|
60 .loc 1 43 0
|
|
61 /* prologue: function */
|
|
62 /* frame size = 0 */
|
|
63 /* stack size = 0 */
|
|
64 .L__stack_usage = 0
|
|
44:timer.c **** return _timer_millis;
|
|
65 .loc 1 44 0
|
|
66 003a 2091 0000 lds r18,_timer_millis
|
|
67 003e 3091 0000 lds r19,_timer_millis+1
|
|
68 0042 4091 0000 lds r20,_timer_millis+2
|
|
69 0046 5091 0000 lds r21,_timer_millis+3
|
|
70 004a 6091 0000 lds r22,_timer_millis+4
|
|
71 004e 7091 0000 lds r23,_timer_millis+5
|
|
72 0052 8091 0000 lds r24,_timer_millis+6
|
|
73 0056 9091 0000 lds r25,_timer_millis+7
|
|
74 /* epilogue start */
|
|
45:timer.c **** }
|
|
75 .loc 1 45 0
|
|
76 005a 0895 ret
|
|
77 .LFE1:
|
|
79 .global timer_micros
|
|
81 timer_micros:
|
|
82 .LFB2:
|
|
46:timer.c ****
|
|
47:timer.c **** /*
|
|
48:timer.c **** * Returns the number of microseconds which have elapsed since the
|
|
49:timer.c **** * last time timer_init() was called. Overflows after about 71 minutes.
|
|
50:timer.c **** */
|
|
51:timer.c **** uint64_t timer_micros(){
|
|
83 .loc 1 51 0
|
|
84 005c 2F92 push r2
|
|
85 .LCFI0:
|
|
86 005e 3F92 push r3
|
|
87 .LCFI1:
|
|
88 0060 4F92 push r4
|
|
89 .LCFI2:
|
|
90 0062 5F92 push r5
|
|
91 .LCFI3:
|
|
92 0064 6F92 push r6
|
|
93 .LCFI4:
|
|
94 0066 7F92 push r7
|
|
95 .LCFI5:
|
|
96 0068 8F92 push r8
|
|
97 .LCFI6:
|
|
98 006a 9F92 push r9
|
|
99 .LCFI7:
|
|
100 006c AF92 push r10
|
|
101 .LCFI8:
|
|
102 006e BF92 push r11
|
|
103 .LCFI9:
|
|
104 0070 CF92 push r12
|
|
105 .LCFI10:
|
|
106 0072 DF92 push r13
|
|
107 .LCFI11:
|
|
108 0074 EF92 push r14
|
|
109 .LCFI12:
|
|
110 0076 FF92 push r15
|
|
111 .LCFI13:
|
|
112 0078 0F93 push r16
|
|
113 .LCFI14:
|
|
114 007a 1F93 push r17
|
|
115 .LCFI15:
|
|
116 007c CF93 push r28
|
|
117 .LCFI16:
|
|
118 007e DF93 push r29
|
|
119 .LCFI17:
|
|
120 0080 0F92 push __tmp_reg__
|
|
121 .LCFI18:
|
|
122 0082 CDB7 in r28,__SP_L__
|
|
123 0084 DEB7 in r29,__SP_H__
|
|
124 .LCFI19:
|
|
125 /* prologue: function */
|
|
126 /* frame size = 1 */
|
|
127 /* stack size = 19 */
|
|
128 .L__stack_usage = 19
|
|
52:timer.c **** return (_timer_millis * 1000);
|
|
129 .loc 1 52 0
|
|
130 0086 8090 0000 lds r8,_timer_millis
|
|
131 008a 7090 0000 lds r7,_timer_millis+1
|
|
132 008e 6090 0000 lds r6,_timer_millis+2
|
|
133 0092 5090 0000 lds r5,_timer_millis+3
|
|
134 0096 4090 0000 lds r4,_timer_millis+4
|
|
135 009a 3090 0000 lds r3,_timer_millis+5
|
|
136 009e 2090 0000 lds r2,_timer_millis+6
|
|
137 00a2 8091 0000 lds r24,_timer_millis+7
|
|
138 00a6 8983 std Y+1,r24
|
|
139 00a8 282D mov r18,r8
|
|
140 00aa 372D mov r19,r7
|
|
141 00ac 462D mov r20,r6
|
|
142 00ae 552D mov r21,r5
|
|
143 00b0 642D mov r22,r4
|
|
144 00b2 732D mov r23,r3
|
|
145 00b4 822D mov r24,r2
|
|
146 00b6 9981 ldd r25,Y+1
|
|
147 00b8 02E0 ldi r16,lo8(2)
|
|
148 00ba 0E94 0000 call __ashldi3
|
|
149 00be F22E mov r15,r18
|
|
150 00c0 132F mov r17,r19
|
|
151 00c2 E42E mov r14,r20
|
|
152 00c4 D52E mov r13,r21
|
|
153 00c6 C62E mov r12,r22
|
|
154 00c8 B72E mov r11,r23
|
|
155 00ca A82E mov r10,r24
|
|
156 00cc 992E mov r9,r25
|
|
157 00ce 05E0 ldi r16,lo8(5)
|
|
158 00d0 0E94 0000 call __ashldi3
|
|
159 00d4 B22F mov r27,r18
|
|
160 00d6 BF19 sub r27,r15
|
|
161 00d8 F1E0 ldi r31,lo8(1)
|
|
162 00da 2B17 cp r18,r27
|
|
163 00dc 00F0 brlo .L4
|
|
164 00de F0E0 ldi r31,lo8(0)
|
|
165 .L4:
|
|
166 00e0 232F mov r18,r19
|
|
167 00e2 211B sub r18,r17
|
|
168 00e4 E1E0 ldi r30,lo8(1)
|
|
169 00e6 3217 cp r19,r18
|
|
170 00e8 00F0 brlo .L5
|
|
171 00ea E0E0 ldi r30,lo8(0)
|
|
172 .L5:
|
|
173 00ec 022F mov r16,r18
|
|
174 00ee 0F1B sub r16,r31
|
|
175 00f0 31E0 ldi r19,lo8(1)
|
|
176 00f2 2017 cp r18,r16
|
|
177 00f4 00F0 brlo .L6
|
|
178 00f6 30E0 ldi r19,lo8(0)
|
|
179 .L6:
|
|
180 00f8 E32B or r30,r19
|
|
181 00fa 342F mov r19,r20
|
|
182 00fc 3E19 sub r19,r14
|
|
183 00fe 21E0 ldi r18,lo8(1)
|
|
184 0100 4317 cp r20,r19
|
|
185 0102 00F0 brlo .L7
|
|
186 0104 20E0 ldi r18,lo8(0)
|
|
187 .L7:
|
|
188 0106 F32E mov r15,r19
|
|
189 0108 FE1A sub r15,r30
|
|
190 010a 41E0 ldi r20,lo8(1)
|
|
191 010c 3F15 cp r19,r15
|
|
192 010e 00F0 brlo .L8
|
|
193 0110 40E0 ldi r20,lo8(0)
|
|
194 .L8:
|
|
195 0112 242B or r18,r20
|
|
196 0114 452F mov r20,r21
|
|
197 0116 4D19 sub r20,r13
|
|
198 0118 31E0 ldi r19,lo8(1)
|
|
199 011a 5417 cp r21,r20
|
|
200 011c 00F0 brlo .L9
|
|
201 011e 30E0 ldi r19,lo8(0)
|
|
202 .L9:
|
|
203 0120 142F mov r17,r20
|
|
204 0122 121B sub r17,r18
|
|
205 0124 21E0 ldi r18,lo8(1)
|
|
206 0126 4117 cp r20,r17
|
|
207 0128 00F0 brlo .L10
|
|
208 012a 20E0 ldi r18,lo8(0)
|
|
209 .L10:
|
|
210 012c 322B or r19,r18
|
|
211 012e 462F mov r20,r22
|
|
212 0130 4C19 sub r20,r12
|
|
213 0132 21E0 ldi r18,lo8(1)
|
|
214 0134 6417 cp r22,r20
|
|
215 0136 00F0 brlo .L11
|
|
216 0138 20E0 ldi r18,lo8(0)
|
|
217 .L11:
|
|
218 013a A42F mov r26,r20
|
|
219 013c A31B sub r26,r19
|
|
220 013e 31E0 ldi r19,lo8(1)
|
|
221 0140 4A17 cp r20,r26
|
|
222 0142 00F0 brlo .L12
|
|
223 0144 30E0 ldi r19,lo8(0)
|
|
224 .L12:
|
|
225 0146 232B or r18,r19
|
|
226 0148 472F mov r20,r23
|
|
227 014a 4B19 sub r20,r11
|
|
228 014c 31E0 ldi r19,lo8(1)
|
|
229 014e 7417 cp r23,r20
|
|
230 0150 00F0 brlo .L13
|
|
231 0152 30E0 ldi r19,lo8(0)
|
|
232 .L13:
|
|
233 0154 E42F mov r30,r20
|
|
234 0156 E21B sub r30,r18
|
|
235 0158 21E0 ldi r18,lo8(1)
|
|
236 015a 4E17 cp r20,r30
|
|
237 015c 00F0 brlo .L14
|
|
238 015e 20E0 ldi r18,lo8(0)
|
|
239 .L14:
|
|
240 0160 322B or r19,r18
|
|
241 0162 482F mov r20,r24
|
|
242 0164 4A19 sub r20,r10
|
|
243 0166 21E0 ldi r18,lo8(1)
|
|
244 0168 8417 cp r24,r20
|
|
245 016a 00F0 brlo .L15
|
|
246 016c 20E0 ldi r18,lo8(0)
|
|
247 .L15:
|
|
248 016e F42F mov r31,r20
|
|
249 0170 F31B sub r31,r19
|
|
250 0172 81E0 ldi r24,lo8(1)
|
|
251 0174 4F17 cp r20,r31
|
|
252 0176 00F0 brlo .L16
|
|
253 0178 80E0 ldi r24,lo8(0)
|
|
254 .L16:
|
|
255 017a 282B or r18,r24
|
|
256 017c 9919 sub r25,r9
|
|
257 017e 921B sub r25,r18
|
|
258 0180 2B2F mov r18,r27
|
|
259 0182 280D add r18,r8
|
|
260 0184 31E0 ldi r19,lo8(1)
|
|
261 0186 2B17 cp r18,r27
|
|
262 0188 00F0 brlo .L17
|
|
263 018a 30E0 ldi r19,lo8(0)
|
|
264 .L17:
|
|
265 018c 700E add r7,r16
|
|
266 018e 41E0 ldi r20,lo8(1)
|
|
267 0190 7016 cp r7,r16
|
|
268 0192 00F0 brlo .L18
|
|
269 0194 40E0 ldi r20,lo8(0)
|
|
270 .L18:
|
|
271 0196 370D add r19,r7
|
|
272 0198 81E0 ldi r24,lo8(1)
|
|
273 019a 3715 cp r19,r7
|
|
274 019c 00F0 brlo .L19
|
|
275 019e 80E0 ldi r24,lo8(0)
|
|
276 .L19:
|
|
277 01a0 482B or r20,r24
|
|
278 01a2 6F0C add r6,r15
|
|
279 01a4 51E0 ldi r21,lo8(1)
|
|
280 01a6 6F14 cp r6,r15
|
|
281 01a8 00F0 brlo .L20
|
|
282 01aa 50E0 ldi r21,lo8(0)
|
|
283 .L20:
|
|
284 01ac 460D add r20,r6
|
|
285 01ae 81E0 ldi r24,lo8(1)
|
|
286 01b0 4615 cp r20,r6
|
|
287 01b2 00F0 brlo .L21
|
|
288 01b4 80E0 ldi r24,lo8(0)
|
|
289 .L21:
|
|
290 01b6 582B or r21,r24
|
|
291 01b8 510E add r5,r17
|
|
292 01ba 61E0 ldi r22,lo8(1)
|
|
293 01bc 5116 cp r5,r17
|
|
294 01be 00F0 brlo .L22
|
|
295 01c0 60E0 ldi r22,lo8(0)
|
|
296 .L22:
|
|
297 01c2 550D add r21,r5
|
|
298 01c4 81E0 ldi r24,lo8(1)
|
|
299 01c6 5515 cp r21,r5
|
|
300 01c8 00F0 brlo .L23
|
|
301 01ca 80E0 ldi r24,lo8(0)
|
|
302 .L23:
|
|
303 01cc 682B or r22,r24
|
|
304 01ce 4A0E add r4,r26
|
|
305 01d0 71E0 ldi r23,lo8(1)
|
|
306 01d2 4A16 cp r4,r26
|
|
307 01d4 00F0 brlo .L24
|
|
308 01d6 70E0 ldi r23,lo8(0)
|
|
309 .L24:
|
|
310 01d8 640D add r22,r4
|
|
311 01da 81E0 ldi r24,lo8(1)
|
|
312 01dc 6415 cp r22,r4
|
|
313 01de 00F0 brlo .L25
|
|
314 01e0 80E0 ldi r24,lo8(0)
|
|
315 .L25:
|
|
316 01e2 782B or r23,r24
|
|
317 01e4 3E0E add r3,r30
|
|
318 01e6 81E0 ldi r24,lo8(1)
|
|
319 01e8 3E16 cp r3,r30
|
|
320 01ea 00F0 brlo .L26
|
|
321 01ec 80E0 ldi r24,lo8(0)
|
|
322 .L26:
|
|
323 01ee 730D add r23,r3
|
|
324 01f0 E1E0 ldi r30,lo8(1)
|
|
325 01f2 7315 cp r23,r3
|
|
326 01f4 00F0 brlo .L27
|
|
327 01f6 E0E0 ldi r30,lo8(0)
|
|
328 .L27:
|
|
329 01f8 8E2B or r24,r30
|
|
330 01fa 2F0E add r2,r31
|
|
331 01fc E1E0 ldi r30,lo8(1)
|
|
332 01fe 2F16 cp r2,r31
|
|
333 0200 00F0 brlo .L28
|
|
334 0202 E0E0 ldi r30,lo8(0)
|
|
335 .L28:
|
|
336 0204 820D add r24,r2
|
|
337 0206 F1E0 ldi r31,lo8(1)
|
|
338 0208 8215 cp r24,r2
|
|
339 020a 00F0 brlo .L29
|
|
340 020c F0E0 ldi r31,lo8(0)
|
|
341 .L29:
|
|
342 020e EF2B or r30,r31
|
|
343 0210 A981 ldd r26,Y+1
|
|
344 0212 9A0F add r25,r26
|
|
345 0214 9E0F add r25,r30
|
|
346 0216 03E0 ldi r16,lo8(3)
|
|
347 0218 0E94 0000 call __ashldi3
|
|
348 /* epilogue start */
|
|
53:timer.c **** }
|
|
349 .loc 1 53 0
|
|
350 021c 0F90 pop __tmp_reg__
|
|
351 021e DF91 pop r29
|
|
352 0220 CF91 pop r28
|
|
353 0222 1F91 pop r17
|
|
354 0224 0F91 pop r16
|
|
355 0226 FF90 pop r15
|
|
356 0228 EF90 pop r14
|
|
357 022a DF90 pop r13
|
|
358 022c CF90 pop r12
|
|
359 022e BF90 pop r11
|
|
360 0230 AF90 pop r10
|
|
361 0232 9F90 pop r9
|
|
362 0234 8F90 pop r8
|
|
363 0236 7F90 pop r7
|
|
364 0238 6F90 pop r6
|
|
365 023a 5F90 pop r5
|
|
366 023c 4F90 pop r4
|
|
367 023e 3F90 pop r3
|
|
368 0240 2F90 pop r2
|
|
369 0242 0895 ret
|
|
370 .LFE2:
|
|
372 .global __vector_14
|
|
374 __vector_14:
|
|
375 .LFB3:
|
|
54:timer.c ****
|
|
55:timer.c ****
|
|
56:timer.c **** /*
|
|
57:timer.c **** * The ISR for timer0 overflow. Increment the _timer_count here, and do the calculcations
|
|
58:timer.c **** * to increment _timer_millis as needed.
|
|
59:timer.c **** */
|
|
60:timer.c **** ISR(TIMER0_COMPA_vect){
|
|
376 .loc 1 60 0
|
|
377 0244 1F92 push r1
|
|
378 .LCFI20:
|
|
379 0246 0F92 push r0
|
|
380 .LCFI21:
|
|
381 0248 0FB6 in r0,__SREG__
|
|
382 024a 0F92 push r0
|
|
383 024c 1124 clr __zero_reg__
|
|
384 024e 2F93 push r18
|
|
385 .LCFI22:
|
|
386 0250 3F93 push r19
|
|
387 .LCFI23:
|
|
388 0252 4F93 push r20
|
|
389 .LCFI24:
|
|
390 0254 5F93 push r21
|
|
391 .LCFI25:
|
|
392 0256 6F93 push r22
|
|
393 .LCFI26:
|
|
394 0258 7F93 push r23
|
|
395 .LCFI27:
|
|
396 025a 8F93 push r24
|
|
397 .LCFI28:
|
|
398 025c 9F93 push r25
|
|
399 .LCFI29:
|
|
400 025e AF93 push r26
|
|
401 .LCFI30:
|
|
402 0260 EF93 push r30
|
|
403 .LCFI31:
|
|
404 0262 FF93 push r31
|
|
405 .LCFI32:
|
|
406 /* prologue: Signal */
|
|
407 /* frame size = 0 */
|
|
408 /* stack size = 14 */
|
|
409 .L__stack_usage = 14
|
|
61:timer.c **** TCNT0 = 0;
|
|
410 .loc 1 61 0
|
|
411 0264 16BC out 70-0x20,__zero_reg__
|
|
62:timer.c **** _timer_millis++;
|
|
412 .loc 1 62 0
|
|
413 0266 4091 0000 lds r20,_timer_millis
|
|
414 026a 3091 0000 lds r19,_timer_millis+1
|
|
415 026e 2091 0000 lds r18,_timer_millis+2
|
|
416 0272 9091 0000 lds r25,_timer_millis+3
|
|
417 0276 8091 0000 lds r24,_timer_millis+4
|
|
418 027a F091 0000 lds r31,_timer_millis+5
|
|
419 027e E091 0000 lds r30,_timer_millis+6
|
|
420 0282 A091 0000 lds r26,_timer_millis+7
|
|
421 0286 642F mov r22,r20
|
|
422 0288 6F5F subi r22,lo8(-(1))
|
|
423 028a 51E0 ldi r21,lo8(1)
|
|
424 028c 6417 cp r22,r20
|
|
425 028e 00F0 brlo .L31
|
|
426 0290 50E0 ldi r21,lo8(0)
|
|
427 .L31:
|
|
428 0292 530F add r21,r19
|
|
429 0294 41E0 ldi r20,lo8(1)
|
|
430 0296 5317 cp r21,r19
|
|
431 0298 00F0 brlo .L33
|
|
432 029a 40E0 ldi r20,lo8(0)
|
|
433 .L33:
|
|
434 029c 420F add r20,r18
|
|
435 029e 31E0 ldi r19,lo8(1)
|
|
436 02a0 4217 cp r20,r18
|
|
437 02a2 00F0 brlo .L35
|
|
438 02a4 30E0 ldi r19,lo8(0)
|
|
439 .L35:
|
|
440 02a6 390F add r19,r25
|
|
441 02a8 21E0 ldi r18,lo8(1)
|
|
442 02aa 3917 cp r19,r25
|
|
443 02ac 00F0 brlo .L37
|
|
444 02ae 20E0 ldi r18,lo8(0)
|
|
445 .L37:
|
|
446 02b0 280F add r18,r24
|
|
447 02b2 91E0 ldi r25,lo8(1)
|
|
448 02b4 2817 cp r18,r24
|
|
449 02b6 00F0 brlo .L39
|
|
450 02b8 90E0 ldi r25,lo8(0)
|
|
451 .L39:
|
|
452 02ba 9F0F add r25,r31
|
|
453 02bc 81E0 ldi r24,lo8(1)
|
|
454 02be 9F17 cp r25,r31
|
|
455 02c0 00F0 brlo .L41
|
|
456 02c2 80E0 ldi r24,lo8(0)
|
|
457 .L41:
|
|
458 02c4 8E0F add r24,r30
|
|
459 02c6 71E0 ldi r23,lo8(1)
|
|
460 02c8 8E17 cp r24,r30
|
|
461 02ca 00F0 brlo .L43
|
|
462 02cc 70E0 ldi r23,lo8(0)
|
|
463 .L43:
|
|
464 02ce 7A0F add r23,r26
|
|
465 02d0 6093 0000 sts _timer_millis,r22
|
|
466 02d4 5093 0000 sts _timer_millis+1,r21
|
|
467 02d8 4093 0000 sts _timer_millis+2,r20
|
|
468 02dc 3093 0000 sts _timer_millis+3,r19
|
|
469 02e0 2093 0000 sts _timer_millis+4,r18
|
|
470 02e4 9093 0000 sts _timer_millis+5,r25
|
|
471 02e8 8093 0000 sts _timer_millis+6,r24
|
|
472 02ec 7093 0000 sts _timer_millis+7,r23
|
|
473 /* epilogue start */
|
|
63:timer.c **** }
|
|
474 .loc 1 63 0
|
|
475 02f0 FF91 pop r31
|
|
476 02f2 EF91 pop r30
|
|
477 02f4 AF91 pop r26
|
|
478 02f6 9F91 pop r25
|
|
479 02f8 8F91 pop r24
|
|
480 02fa 7F91 pop r23
|
|
481 02fc 6F91 pop r22
|
|
482 02fe 5F91 pop r21
|
|
483 0300 4F91 pop r20
|
|
484 0302 3F91 pop r19
|
|
485 0304 2F91 pop r18
|
|
486 0306 0F90 pop r0
|
|
487 0308 0FBE out __SREG__,r0
|
|
488 030a 0F90 pop r0
|
|
489 030c 1F90 pop r1
|
|
490 030e 1895 reti
|
|
491 .LFE3:
|
|
493 .lcomm _timer_millis,8
|
|
738 .Letext0:
|
|
739 .file 2 "/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h"
|
|
DEFINED SYMBOLS
|
|
*ABS*:0000000000000000 timer.c
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:2 *ABS*:000000000000003f __SREG__
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:3 *ABS*:000000000000003e __SP_H__
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:4 *ABS*:000000000000003d __SP_L__
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:5 *ABS*:0000000000000000 __tmp_reg__
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:6 *ABS*:0000000000000001 __zero_reg__
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:13 .text:0000000000000000 timer_init
|
|
.bss:0000000000000000 _timer_millis
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:58 .text:000000000000003a timer_millis
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:81 .text:000000000000005c timer_micros
|
|
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:374 .text:0000000000000244 __vector_14
|
|
|
|
UNDEFINED SYMBOLS
|
|
__do_copy_data
|
|
__do_clear_bss
|
|
__ashldi3
|