📄 interupter.lst
字号:
1 .file "interupter.c"
2 .arch atmega128
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
223 .global __vector_7
225 __vector_7:
1:interupter.c **** //----------------------------------------------------//
2:interupter.c **** //-------Institute Of Computing Technology-----------//
3:interupter.c **** //------------Chinese Academic Science---------------//
4:interupter.c **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
5:interupter.c **** //----------------------------------------------------//
6:interupter.c **** #include "interupter.h"
7:interupter.c ****
8:interupter.c **** //---------------------------------------------------------fifop中断(pe6)
9:interupter.c **** void __attribute((signal)) __vector_7(void)
10:interupter.c **** {
227 .LM1:
228 /* prologue: frame size=0 */
229 0000 1F92 push __zero_reg__
230 0002 0F92 push __tmp_reg__
231 0004 0FB6 in __tmp_reg__,__SREG__
232 0006 0F92 push __tmp_reg__
233 0008 1124 clr __zero_reg__
234 000a 2F93 push r18
235 000c 3F93 push r19
236 000e 4F93 push r20
237 0010 5F93 push r21
238 0012 6F93 push r22
239 0014 7F93 push r23
240 0016 8F93 push r24
241 0018 9F93 push r25
242 001a AF93 push r26
243 001c BF93 push r27
244 001e EF93 push r30
245 0020 FF93 push r31
246 /* prologue end (size=17) */
11:interupter.c ****
12:interupter.c **** cc2420_fifopintr();
248 .LM2:
249 0022 0E94 0000 call cc2420_fifopintr
250 /* epilogue: frame size=0 */
251 0026 FF91 pop r31
252 0028 EF91 pop r30
253 002a BF91 pop r27
254 002c AF91 pop r26
255 002e 9F91 pop r25
256 0030 8F91 pop r24
257 0032 7F91 pop r23
258 0034 6F91 pop r22
259 0036 5F91 pop r21
260 0038 4F91 pop r20
261 003a 3F91 pop r19
262 003c 2F91 pop r18
263 003e 0F90 pop __tmp_reg__
264 0040 0FBE out __SREG__,__tmp_reg__
265 0042 0F90 pop __tmp_reg__
266 0044 1F90 pop __zero_reg__
267 0046 1895 reti
268 /* epilogue end (size=17) */
269 /* function __vector_7 size 36 (2) */
272 .global __vector_12
274 __vector_12:
13:interupter.c ****
14:interupter.c **** }
15:interupter.c ****
16:interupter.c **** //----------------------------------------------------------定时器1 比较a 中断
17:interupter.c **** void __attribute((interrupt)) __vector_12(void)
18:interupter.c **** {
276 .LM3:
277 /* prologue: frame size=0 */
278 0048 7894 sei
279 004a 1F92 push __zero_reg__
280 004c 0F92 push __tmp_reg__
281 004e 0FB6 in __tmp_reg__,__SREG__
282 0050 0F92 push __tmp_reg__
283 0052 1124 clr __zero_reg__
284 0054 EF92 push r14
285 0056 FF92 push r15
286 0058 0F93 push r16
287 005a 1F93 push r17
288 005c 2F93 push r18
289 005e 3F93 push r19
290 0060 4F93 push r20
291 0062 5F93 push r21
292 0064 6F93 push r22
293 0066 7F93 push r23
294 0068 8F93 push r24
295 006a 9F93 push r25
296 006c AF93 push r26
297 006e BF93 push r27
298 0070 CF93 push r28
299 0072 DF93 push r29
300 0074 EF93 push r30
301 0076 FF93 push r31
302 /* prologue end (size=24) */
19:interupter.c **** uint16_t temp_interval;
20:interupter.c **** uint8_t fire_reason;
21:interupter.c **** systimer_queue_pointer temp;
22:interupter.c **** uint32_t test;
23:interupter.c **** test=systime32();
304 .LM4:
305 0078 0E94 0000 call systime32
306 007c DC01 movw r26,r24
307 007e CB01 movw r24,r22
24:interupter.c **** if(((head_of_systimer_queue->ticksLeft)&(0xffff0000))==(test&(0xffff0000)))
309 .LM5:
310 0080 E091 0000 lds r30,head_of_systimer_queue
311 0084 F091 0000 lds r31,(head_of_systimer_queue)+1
312 0088 2381 ldd r18,Z+3
313 008a 3481 ldd r19,Z+4
314 008c 4581 ldd r20,Z+5
315 008e 5681 ldd r21,Z+6
316 0090 2070 andi r18,lo8(-65536)
317 0092 3070 andi r19,hi8(-65536)
318 0094 8070 andi r24,lo8(-65536)
319 0096 9070 andi r25,hi8(-65536)
320 0098 2817 cp r18,r24
321 009a 3907 cpc r19,r25
322 009c 4A07 cpc r20,r26
323 009e 5B07 cpc r21,r27
324 00a0 31F5 brne .L2
325 .LBB2:
25:interupter.c **** {
26:interupter.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
327 .LM6:
328 00a2 0E94 0000 call os_atomic_start
329 00a6 E82E mov r14,r24
330 .LBB3:
27:interupter.c **** {
28:interupter.c **** //if(((head_of_systimer_queue->ticksLeft)&&(0xffff0000))==((systime32())&&(0xffff0000)))
29:interupter.c **** fire_reason=head_of_systimer_queue->timer_reason;
332 .LM7:
333 00a8 0091 0000 lds r16,head_of_systimer_queue
334 00ac 1091 0000 lds r17,(head_of_systimer_queue)+1
335 00b0 F801 movw r30,r16
336 00b2 F080 ld r15,Z
30:interupter.c **** temp=head_of_systimer_queue;
31:interupter.c **** //test=systime32();
32:interupter.c **** //printf("\nthe current timer is %08x",test);
33:interupter.c **** temp_interval=Timer1_getnextInterval();
338 .LM8:
339 00b4 0E94 0000 call Timer1_getnextInterval
340 00b8 EC01 movw r28,r24
34:interupter.c **** head_of_systimer_queue=head_of_systimer_queue->next;
342 .LM9:
343 00ba E091 0000 lds r30,head_of_systimer_queue
344 00be F091 0000 lds r31,(head_of_systimer_queue)+1
345 00c2 8785 ldd r24,Z+15
346 00c4 9089 ldd r25,Z+16
347 00c6 9093 0000 sts (head_of_systimer_queue)+1,r25
348 00ca 8093 0000 sts head_of_systimer_queue,r24
35:interupter.c **** //temp_interval=TCNT1+100;
36:interupter.c **** free(temp);
350 .LM10:
351 00ce C801 movw r24,r16
352 00d0 0E94 0000 call free
37:interupter.c **** if(temp_interval!=0)
354 .LM11:
355 00d4 2097 sbiw r28,0
356 00d6 19F0 breq .L4
38:interupter.c **** OCR1A=temp_interval;
358 .LM12:
359 00d8 DBBD out (74)+1-0x20,r29
360 00da CABD out 74-0x20,r28
361 00dc 02C0 rjmp .L5
362 .L4:
363 .LBB4:
39:interupter.c **** else
40:interupter.c **** {
41:interupter.c **** //printf("\ntimer1 disable");
42:interupter.c **** Timer1_OCR_intDisable();
365 .LM13:
366 00de 0E94 0000 call Timer1_OCR_intDisable
367 .L5:
368 .LBE4:
369 .LBE3:
43:interupter.c **** }
44:interupter.c ****
45:interupter.c **** }
46:interupter.c **** os_atomic_end(_nesc_atomic); }
371 .LM14:
372 00e2 8E2D mov r24,r14
373 00e4 0E94 0000 call os_atomic_end
374 .LBE2:
47:interupter.c ****
48:interupter.c **** systimer_task_fire(fire_reason);
376 .LM15:
377 00e8 8F2D mov r24,r15
378 00ea 0E94 0000 call systimer_task_fire
379 .L2:
380 /* epilogue: frame size=0 */
381 00ee FF91 pop r31
382 00f0 EF91 pop r30
383 00f2 DF91 pop r29
384 00f4 CF91 pop r28
385 00f6 BF91 pop r27
386 00f8 AF91 pop r26
387 00fa 9F91 pop r25
388 00fc 8F91 pop r24
389 00fe 7F91 pop r23
390 0100 6F91 pop r22
391 0102 5F91 pop r21
392 0104 4F91 pop r20
393 0106 3F91 pop r19
394 0108 2F91 pop r18
395 010a 1F91 pop r17
396 010c 0F91 pop r16
397 010e FF90 pop r15
398 0110 EF90 pop r14
399 0112 0F90 pop __tmp_reg__
400 0114 0FBE out __SREG__,__tmp_reg__
401 0116 0F90 pop __tmp_reg__
402 0118 1F90 pop __zero_reg__
403 011a 1895 reti
404 /* epilogue end (size=23) */
405 /* function __vector_12 size 106 (59) */
414 .global __vector_11
416 __vector_11:
49:interupter.c **** }
50:interupter.c **** /*
51:interupter.c **** else
52:interupter.c **** {
53:interupter.c **** if(((head_of_systimer_queue->ticksLeft)&(0x3fff0000))==(test&(0x3fff0000)))
54:interupter.c **** head_of_systimer_queue->high_left=head_of_systimer_queue->high_left-0x40000000;
55:interupter.c **** OCR1A=head_of_systimer_queue->ticks;
56:interupter.c **** }
57:interupter.c **** */
58:interupter.c **** }
59:interupter.c **** void __attribute((interrupt)) __vector_11(void)//定时器1-- input capture interrupt
60:interupter.c **** {
418 .LM16:
419 /* prologue: frame size=0 */
420 011c 7894 sei
421 011e 1F92 push __zero_reg__
422 0120 0F92 push __tmp_reg__
423 0122 0FB6 in __tmp_reg__,__SREG__
424 0124 0F92 push __tmp_reg__
425 0126 1124 clr __zero_reg__
426 0128 1F93 push r17
427 012a 2F93 push r18
428 012c 3F93 push r19
429 012e 4F93 push r20
430 0130 5F93 push r21
431 0132 6F93 push r22
432 0134 7F93 push r23
433 0136 8F93 push r24
434 0138 9F93 push r25
435 013a AF93 push r26
436 013c BF93 push r27
437 013e EF93 push r30
438 0140 FF93 push r31
439 /* prologue end (size=19) */
440 .LBB5:
61:interupter.c ****
62:interupter.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
442 .LM17:
443 0142 0E94 0000 call os_atomic_start
444 0146 182F mov r17,r24
63:interupter.c **** {
64:interupter.c **** timestamp_H=systime16H();
446 .LM18:
447 0148 0E94 0000 call systime16H
448 014c 9093 0000 sts (timestamp_H)+1,r25
449 0150 8093 0000 sts timestamp_H,r24
65:interupter.c **** }
66:interupter.c **** os_atomic_end(_nesc_atomic); }
451 .LM19:
452 0154 812F mov r24,r17
453 0156 0E94 0000 call os_atomic_end
454 .LBE5:
455 /* epilogue: frame size=0 */
456 015a FF91 pop r31
457 015c EF91 pop r30
458 015e BF91 pop r27
459 0160 AF91 pop r26
460 0162 9F91 pop r25
461 0164 8F91 pop r24
462 0166 7F91 pop r23
463 0168 6F91 pop r22
464 016a 5F91 pop r21
465 016c 4F91 pop r20
466 016e 3F91 pop r19
467 0170 2F91 pop r18
468 0172 1F91 pop r17
469 0174 0F90 pop __tmp_reg__
470 0176 0FBE out __SREG__,__tmp_reg__
471 0178 0F90 pop __tmp_reg__
472 017a 1F90 pop __zero_reg__
473 017c 1895 reti
474 /* epilogue end (size=18) */
475 /* function __vector_11 size 49 (12) */
481 .global __vector_14
483 __vector_14:
67:interupter.c ****
68:interupter.c **** }
69:interupter.c ****
70:interupter.c **** void __attribute((interrupt)) __vector_14(void)//定时器1-- overflow interrupt
71:interupter.c **** {
485 .LM20:
486 /* prologue: frame size=0 */
487 017e 7894 sei
488 0180 1F92 push __zero_reg__
489 0182 0F92 push __tmp_reg__
490 0184 0FB6 in __tmp_reg__,__SREG__
491 0186 0F92 push __tmp_reg__
492 0188 1124 clr __zero_reg__
493 018a 2F93 push r18
494 018c 3F93 push r19
495 018e 4F93 push r20
496 0190 5F93 push r21
497 0192 6F93 push r22
498 0194 7F93 push r23
499 0196 8F93 push r24
500 0198 9F93 push r25
501 019a AF93 push r26
502 019c BF93 push r27
503 019e EF93 push r30
504 01a0 FF93 push r31
505 /* prologue end (size=18) */
506 .LBB6:
72:interupter.c ****
73:interupter.c **** { os_atomic_t _nesc_atomic = os_atomic_start();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -