📄 timer.lst
字号:
294 /* function TimerSignalOneTimer size 42 (42) */
299 TimerHandleFire:
172:timer.c **** TimerTimerFired(itimer);
173:timer.c **** }
174:timer.c **** }
175:timer.c ****
176:timer.c **** static void TimerEnqueue(uint8_t value)
177:timer.c **** {
178:timer.c **** if (TimerM_queue_tail == NUM_TIMERS - 1) {
179:timer.c **** TimerM_queue_tail = -1;
180:timer.c **** }
181:timer.c **** TimerM_queue_tail++;
182:timer.c **** TimerM_queue_size++;
183:timer.c **** TimerM_queue[(uint8_t )TimerM_queue_tail] = value;
184:timer.c **** }
185:timer.c ****
186:timer.c **** static void TimerHandleFire(void)
187:timer.c **** {
301 .LM25:
302 /* prologue: frame size=0 */
303 011e 8F92 push r8
304 0120 9F92 push r9
305 0122 AF92 push r10
306 0124 BF92 push r11
307 0126 CF92 push r12
308 0128 DF92 push r13
309 012a EF92 push r14
310 012c FF92 push r15
311 012e 0F93 push r16
312 0130 1F93 push r17
313 0132 CF93 push r28
314 0134 DF93 push r29
315 /* prologue end (size=12) */
188:timer.c **** uint8_t i;
189:timer.c **** TimerM_setIntervalFlag = 1;
317 .LM26:
318 0136 81E0 ldi r24,lo8(1)
319 0138 8093 0000 sts TimerM_setIntervalFlag,r24
190:timer.c **** if (TimerM_mState)
321 .LM27:
322 013c 8091 0000 lds r24,TimerM_mState
323 0140 9091 0000 lds r25,(TimerM_mState)+1
324 0144 A091 0000 lds r26,(TimerM_mState)+2
325 0148 B091 0000 lds r27,(TimerM_mState)+3
326 014c 0097 sbiw r24,0
327 014e A105 cpc r26,__zero_reg__
328 0150 B105 cpc r27,__zero_reg__
329 0152 09F4 brne .+2
330 0154 84C0 rjmp .L18
191:timer.c **** {
192:timer.c **** for (i = 0; i < NUM_TIMERS; i++)
332 .LM28:
333 0156 DD24 clr r13
334 0158 00E0 ldi r16,lo8(TimerM_mTimerList)
335 015a 10E0 ldi r17,hi8(TimerM_mTimerList)
336 015c EE24 clr r14
337 015e FF24 clr r15
338 .L28:
193:timer.c **** {
194:timer.c **** if (TimerM_mState & (0x1 << i))
340 .LM29:
341 0160 61E0 ldi r22,lo8(1)
342 0162 70E0 ldi r23,hi8(1)
343 0164 0E2C mov r0,r14
344 0166 02C0 rjmp 2f
345 0168 660F 1: lsl r22
346 016a 771F rol r23
347 016c 0A94 2: dec r0
348 016e E2F7 brpl 1b
349 0170 CB01 movw r24,r22
350 0172 AA27 clr r26
351 0174 97FD sbrc r25,7
352 0176 A095 com r26
353 0178 BA2F mov r27,r26
354 017a 8090 0000 lds r8,TimerM_mState
355 017e 9090 0000 lds r9,(TimerM_mState)+1
356 0182 A090 0000 lds r10,(TimerM_mState)+2
357 0186 B090 0000 lds r11,(TimerM_mState)+3
358 018a 8821 and r24,r8
359 018c 9921 and r25,r9
360 018e AA21 and r26,r10
361 0190 BB21 and r27,r11
362 0192 0097 sbiw r24,0
363 0194 A105 cpc r26,__zero_reg__
364 0196 B105 cpc r27,__zero_reg__
365 0198 09F4 brne .+2
366 019a 57C0 rjmp .L21
195:timer.c **** {
196:timer.c **** TimerM_mTimerList[i].ticksLeft -= TimerM_mInterval + 1;
368 .LM30:
369 019c 8091 0000 lds r24,TimerM_mInterval
370 01a0 9927 clr r25
371 01a2 0196 adiw r24,1
372 01a4 AA27 clr r26
373 01a6 97FD sbrc r25,7
374 01a8 A095 com r26
375 01aa BA2F mov r27,r26
376 01ac F801 movw r30,r16
377 01ae 2581 ldd r18,Z+5
378 01b0 3681 ldd r19,Z+6
379 01b2 4781 ldd r20,Z+7
380 01b4 5085 ldd r21,Z+8
381 01b6 281B sub r18,r24
382 01b8 390B sbc r19,r25
383 01ba 4A0B sbc r20,r26
384 01bc 5B0B sbc r21,r27
385 01be 2583 std Z+5,r18
386 01c0 3683 std Z+6,r19
387 01c2 4783 std Z+7,r20
388 01c4 5087 std Z+8,r21
197:timer.c **** if (TimerM_mTimerList[i].ticksLeft <= 2)
390 .LM31:
391 01c6 2330 cpi r18,lo8(3)
392 01c8 3105 cpc r19,__zero_reg__
393 01ca 4105 cpc r20,__zero_reg__
394 01cc 5105 cpc r21,__zero_reg__
395 01ce ECF5 brge .L21
198:timer.c **** {
199:timer.c **** if (TimerM_mTimerList[i].type == TIMER_REPEAT)
397 .LM32:
398 01d0 8081 ld r24,Z
399 01d2 8823 tst r24
400 01d4 69F4 brne .L24
200:timer.c **** {
201:timer.c **** TimerM_mTimerList[i].ticksLeft += TimerM_mTimerList[i].ticks;
402 .LM33:
403 01d6 8181 ldd r24,Z+1
404 01d8 9281 ldd r25,Z+2
405 01da A381 ldd r26,Z+3
406 01dc B481 ldd r27,Z+4
407 01de 280F add r18,r24
408 01e0 391F adc r19,r25
409 01e2 4A1F adc r20,r26
410 01e4 5B1F adc r21,r27
411 01e6 2583 std Z+5,r18
412 01e8 3683 std Z+6,r19
413 01ea 4783 std Z+7,r20
414 01ec 5087 std Z+8,r21
415 01ee 13C0 rjmp .L25
416 .L24:
202:timer.c **** }
203:timer.c **** else
204:timer.c **** {
205:timer.c **** TimerM_mState &= ~(0x1 << i);
418 .LM34:
419 01f0 CB01 movw r24,r22
420 01f2 8095 com r24
421 01f4 9095 com r25
422 01f6 AA27 clr r26
423 01f8 97FD sbrc r25,7
424 01fa A095 com r26
425 01fc BA2F mov r27,r26
426 01fe 8822 and r8,r24
427 0200 9922 and r9,r25
428 0202 AA22 and r10,r26
429 0204 BB22 and r11,r27
430 0206 8092 0000 sts TimerM_mState,r8
431 020a 9092 0000 sts (TimerM_mState)+1,r9
432 020e A092 0000 sts (TimerM_mState)+2,r10
433 0212 B092 0000 sts (TimerM_mState)+3,r11
434 .L25:
435 .LBB7:
436 .LBB8:
438 .LM35:
439 0216 8091 0000 lds r24,TimerM_queue_tail
440 021a 8130 cpi r24,lo8(1)
441 021c 19F4 brne .L26
443 .LM36:
444 021e 8FEF ldi r24,lo8(-1)
445 0220 8093 0000 sts TimerM_queue_tail,r24
446 .L26:
448 .LM37:
449 0224 9091 0000 lds r25,TimerM_queue_tail
450 0228 9F5F subi r25,lo8(-(1))
451 022a 9093 0000 sts TimerM_queue_tail,r25
453 .LM38:
454 022e 8091 0000 lds r24,TimerM_queue_size
455 0232 8F5F subi r24,lo8(-(1))
456 0234 8093 0000 sts TimerM_queue_size,r24
458 .LM39:
459 0238 E92F mov r30,r25
460 023a FF27 clr r31
461 023c E050 subi r30,lo8(-(TimerM_queue))
462 023e F040 sbci r31,hi8(-(TimerM_queue))
463 0240 D082 st Z,r13
464 .LBE8:
465 .LBE7:
206:timer.c **** }
207:timer.c **** TimerEnqueue(i);
208:timer.c **** OSPostTask(TimerSignalOneTimer);
467 .LM40:
468 0242 80E0 ldi r24,lo8(pm(TimerSignalOneTimer))
469 0244 90E0 ldi r25,hi8(pm(TimerSignalOneTimer))
470 0246 0E94 0000 call OSPostTask
471 .L21:
473 .LM41:
474 024a D394 inc r13
475 024c 0894 sec
476 024e E11C adc r14,__zero_reg__
477 0250 F11C adc r15,__zero_reg__
478 0252 075F subi r16,lo8(-(9))
479 0254 1F4F sbci r17,hi8(-(9))
480 0256 F1E0 ldi r31,lo8(1)
481 0258 FD15 cp r31,r13
482 025a 08F0 brlo .+2
483 025c 81CF rjmp .L28
484 .L18:
485 .LBB9:
486 .LBB10:
488 .LM42:
489 025e 46EE ldi r20,lo8(-26)
490 0260 E42E mov r14,r20
492 .LM43:
493 0262 8090 0000 lds r8,TimerM_mState
494 0266 9090 0000 lds r9,(TimerM_mState)+1
495 026a A090 0000 lds r10,(TimerM_mState)+2
496 026e B090 0000 lds r11,(TimerM_mState)+3
497 0272 8114 cp r8,__zero_reg__
498 0274 9104 cpc r9,__zero_reg__
499 0276 A104 cpc r10,__zero_reg__
500 0278 B104 cpc r11,__zero_reg__
501 027a 91F1 breq .L29
502 027c 31E0 ldi r19,lo8(1)
503 027e C32E mov r12,r19
504 0280 D12C mov r13,__zero_reg__
505 0282 60E0 ldi r22,lo8(TimerM_mTimerList)
506 0284 70E0 ldi r23,hi8(TimerM_mTimerList)
507 0286 00E0 ldi r16,lo8(0)
508 0288 10E0 ldi r17,hi8(0)
509 028a 21E0 ldi r18,lo8(1)
510 028c F22E mov r15,r18
511 .L34:
513 .LM44:
514 028e C601 movw r24,r12
515 0290 002E mov r0,r16
516 0292 02C0 rjmp 2f
517 0294 880F 1: lsl r24
518 0296 991F rol r25
519 0298 0A94 2: dec r0
520 029a E2F7 brpl 1b
521 029c AA27 clr r26
522 029e 97FD sbrc r25,7
523 02a0 A095 com r26
524 02a2 BA2F mov r27,r26
525 02a4 8821 and r24,r8
526 02a6 9921 and r25,r9
527 02a8 AA21 and r26,r10
528 02aa BB21 and r27,r11
529 02ac 0097 sbiw r24,0
530 02ae A105 cpc r26,__zero_reg__
531 02b0 B105 cpc r27,__zero_reg__
532 02b2 79F0 breq .L32
533 02b4 2E2D mov r18,r14
534 02b6 3327 clr r19
535 02b8 4427 clr r20
536 02ba 5527 clr r21
537 02bc FB01 movw r30,r22
538 02be 8581 ldd r24,Z+5
539 02c0 9681 ldd r25,Z+6
540 02c2 A781 ldd r26,Z+7
541 02c4 B085 ldd r27,Z+8
542 02c6 8217 cp r24,r18
543 02c8 9307 cpc r25,r19
544 02ca A407 cpc r26,r20
545 02cc B507 cpc r27,r21
546 02ce 0CF4 brge .L32
548 .LM45:
549 02d0 E580 ldd r14,Z+5
550 .L32:
552 .LM46:
553 02d2 FA94 dec r15
554 02d4 0F5F subi r16,lo8(-(1))
555 02d6 1F4F sbci r17,hi8(-(1))
556 02d8 675F subi r22,lo8(-(9))
557 02da 7F4F sbci r23,hi8(-(9))
558 02dc F7FE sbrs r15,7
559 02de D7CF rjmp .L34
560 .L29:
561 .LBB11:
563 .LM47:
564 02e0 0E94 0000 call AtomicStart
565 02e4 182F mov r17,r24
567 .LM48:
568 02e6 E092 0000 sts TimerM_mInterval,r14
570 .LM49:
571 02ea 8E2D mov r24,r14
572 02ec 0E94 0000 call TimerHPLClockSetInterval
574 .LM50:
575 02f0 1092 0000 sts TimerM_setIntervalFlag,__zero_reg__
577 .LM51:
578 02f4 812F mov r24,r17
579 02f6 0E94 0000 call AtomicEnd
580 .LBE11:
582 .LM52:
583 02fa 0E94 0000 call PowerManagementAdjust
584 .LBE10:
585 .LBE9:
586 /* epilogue: frame size=0 */
587 02fe DF91 pop r29
588 0300 CF91 pop r28
589 0302 1F91 pop r17
590 0304 0F91 pop r16
591 0306 FF90 pop r15
592 0308 EF90 pop r14
593 030a DF90 pop r13
594 030c CF90 pop r12
595 030e BF90 pop r11
596 0310 AF90 pop r10
597 0312 9F90 pop r9
598 0314 8F90 pop r8
599 0316 0895 ret
600 /* epilogue end (size=13) */
601 /* function TimerHandleFire size 253 (228) */
616 .global TimerStdControlInit
618 TimerStdControlInit:
209:timer.c **** }
210:timer.c **** }
211:timer.c **** }
212:timer.c **** }
213:timer.c **** TimerAdjustInterval();
214:timer.c **** }
215:timer.c ****
216:timer.c **** static result_t TimerClockFire(void)
217:timer.c **** {
218:timer.c **** OSPostTask(TimerHandleFire);
219:timer.c **** return SUCCESS;
220:timer.c **** }
221:timer.c ****
222:timer.c **** result_t TimerStdControlInit(void)
223:timer.c **** {
620 .LM53:
621 /* prologue: frame size=0 */
622 0318 1F93 push r17
623 /* prologue end (size=1) */
224:timer.c **** TimerM_mState = 0;
625 .LM54:
626 031a 1092 0000 sts TimerM_mState,__zero_reg__
627 031e 1092 0000 sts (TimerM_mState)+1,__zero_reg__
628 0322 1092 0000 sts (TimerM_mState)+2,__zero_reg__
629 0326 1092 0000 sts (TimerM_mState)+3,__zero_reg__
225:timer.c **** TimerM_setIntervalFlag = 0;
631 .LM55:
632 032a 1092 0000 sts TimerM_setIntervalFlag,__zero_reg__
226:timer.c **** TimerM_queue_head = TimerM_queue_tail = -1;
634 .LM56:
635 032e 8FEF ldi r24,lo8(-1)
636 0330 8093 0000 sts TimerM_queue_tail,r24
637 0334 8093 0000 sts TimerM_queue_head,r24
227:timer.c **** TimerM_queue_size = 0;
639 .LM57:
640 0338 1092 0000 sts TimerM_queue_size,__zero_reg__
228:timer.c **** TimerM_mScale = 3;
642 .LM58:
643 033c 83E0 ldi r24,lo8(3)
644 033e 8093 0000 sts TimerM_mScale,r24
229:timer.c **** TimerM_mInterval = TimerM_maxTimerInterval;
646 .LM59:
647 0342 16EE ldi r17,lo8(-26)
648 0344 1093 0000 sts TimerM_mInterval,r17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -