📄 timer.lst
字号:
649 .LBB12:
650 .LBB13:
651 .LBB14:
653 .LM60:
654 0348 0E94 0000 call AtomicStart
656 .LM61:
657 034c 97B7 in r25,87-0x20
658 034e 9E7F andi r25,lo8(-2)
659 0350 97BF out 87-0x20,r25
661 .LM62:
662 0352 97B7 in r25,87-0x20
663 0354 9D7F andi r25,lo8(-3)
664 0356 97BF out 87-0x20,r25
666 .LM63:
667 0358 90B7 in r25,80-0x20
668 035a 9860 ori r25,lo8(8)
669 035c 90BF out 80-0x20,r25
671 .LM64:
672 035e 9BE0 ldi r25,lo8(11)
673 0360 93BF out 83-0x20,r25
675 .LM65:
676 0362 12BE out 82-0x20,__zero_reg__
678 .LM66:
679 0364 11BF out 81-0x20,r17
681 .LM67:
682 0366 97B7 in r25,87-0x20
683 0368 9260 ori r25,lo8(2)
684 036a 97BF out 87-0x20,r25
686 .LM68:
687 036c 0E94 0000 call AtomicEnd
688 .LBE14:
689 .LBE13:
690 .LBE12:
230:timer.c **** return TimerHPLClockSetRate(TimerM_mInterval, TimerM_mScale);
231:timer.c **** }
692 .LM69:
693 0370 81E0 ldi r24,lo8(1)
694 0372 90E0 ldi r25,hi8(1)
695 /* epilogue: frame size=0 */
696 0374 1F91 pop r17
697 0376 0895 ret
698 /* epilogue end (size=2) */
699 /* function TimerStdControlInit size 48 (45) */
708 .global TimerTimerStart
710 TimerTimerStart:
232:timer.c ****
233:timer.c **** result_t TimerTimerStart(uint8_t id, char type, uint32_t interval)
234:timer.c **** {
712 .LM70:
713 /* prologue: frame size=0 */
714 0378 9F92 push r9
715 037a AF92 push r10
716 037c BF92 push r11
717 037e CF92 push r12
718 0380 DF92 push r13
719 0382 EF92 push r14
720 0384 FF92 push r15
721 0386 0F93 push r16
722 0388 1F93 push r17
723 038a CF93 push r28
724 038c DF93 push r29
725 /* prologue end (size=11) */
726 038e 5901 movw r10,r18
727 0390 6A01 movw r12,r20
235:timer.c **** uint8_t diff;
236:timer.c ****
237:timer.c **** if (id >= NUM_TIMERS) {
729 .LM71:
730 0392 8230 cpi r24,lo8(2)
731 0394 10F4 brsh .L46
238:timer.c **** return FAIL;
239:timer.c **** }
240:timer.c **** if (type > 1) {
733 .LM72:
734 0396 6230 cpi r22,lo8(2)
735 0398 18F0 brlo .L44
736 .L46:
241:timer.c **** return FAIL;
738 .LM73:
739 039a 80E0 ldi r24,lo8(0)
740 039c 90E0 ldi r25,hi8(0)
741 039e 57C0 rjmp .L42
742 .L44:
242:timer.c **** }
243:timer.c **** TimerM_mTimerList[id].ticks = interval;
744 .LM74:
745 03a0 E82E mov r14,r24
746 03a2 FF24 clr r15
747 03a4 8701 movw r16,r14
748 03a6 53E0 ldi r21,3
749 03a8 000F 1: lsl r16
750 03aa 111F rol r17
751 03ac 5A95 dec r21
752 03ae E1F7 brne 1b
753 03b0 0E0D add r16,r14
754 03b2 1F1D adc r17,r15
755 03b4 0050 subi r16,lo8(-(TimerM_mTimerList))
756 03b6 1040 sbci r17,hi8(-(TimerM_mTimerList))
757 03b8 F801 movw r30,r16
758 03ba A182 std Z+1,r10
759 03bc B282 std Z+2,r11
760 03be C382 std Z+3,r12
761 03c0 D482 std Z+4,r13
244:timer.c **** TimerM_mTimerList[id].type = type;
763 .LM75:
764 03c2 6083 st Z,r22
765 .LBB15:
245:timer.c ****
246:timer.c **** { uint8_t atomicState = AtomicStart();
767 .LM76:
768 03c4 0E94 0000 call AtomicStart
769 03c8 982E mov r9,r24
247:timer.c **** {
248:timer.c **** diff = * (volatile unsigned char *)(0x32 + 0x20);
771 .LM77:
772 03ca 82B7 in r24,82-0x20
249:timer.c **** interval += diff;
774 .LM78:
775 03cc A80E add r10,r24
776 03ce B11C adc r11,__zero_reg__
777 03d0 C11C adc r12,__zero_reg__
778 03d2 D11C adc r13,__zero_reg__
250:timer.c **** TimerM_mTimerList[id].ticksLeft = interval;
780 .LM79:
781 03d4 F801 movw r30,r16
782 03d6 A582 std Z+5,r10
783 03d8 B682 std Z+6,r11
784 03da C782 std Z+7,r12
785 03dc D086 std Z+8,r13
251:timer.c **** TimerM_mState |= 0x1 << id;
787 .LM80:
788 03de C1E0 ldi r28,lo8(1)
789 03e0 D0E0 ldi r29,hi8(1)
790 03e2 CE01 movw r24,r28
791 03e4 02C0 rjmp 2f
792 03e6 880F 1: lsl r24
793 03e8 991F rol r25
794 03ea EA94 2: dec r14
795 03ec E2F7 brpl 1b
796 03ee 9C01 movw r18,r24
797 03f0 4427 clr r20
798 03f2 37FD sbrc r19,7
799 03f4 4095 com r20
800 03f6 542F mov r21,r20
801 03f8 8091 0000 lds r24,TimerM_mState
802 03fc 9091 0000 lds r25,(TimerM_mState)+1
803 0400 A091 0000 lds r26,(TimerM_mState)+2
804 0404 B091 0000 lds r27,(TimerM_mState)+3
805 0408 822B or r24,r18
806 040a 932B or r25,r19
807 040c A42B or r26,r20
808 040e B52B or r27,r21
809 0410 8093 0000 sts TimerM_mState,r24
810 0414 9093 0000 sts (TimerM_mState)+1,r25
811 0418 A093 0000 sts (TimerM_mState)+2,r26
812 041c B093 0000 sts (TimerM_mState)+3,r27
252:timer.c **** if (interval < TimerM_mInterval) {
814 .LM81:
815 0420 8091 0000 lds r24,TimerM_mInterval
816 0424 9927 clr r25
817 0426 AA27 clr r26
818 0428 BB27 clr r27
819 042a A816 cp r10,r24
820 042c B906 cpc r11,r25
821 042e CA06 cpc r12,r26
822 0430 DB06 cpc r13,r27
823 0432 48F4 brsh .L45
253:timer.c **** TimerM_mInterval = interval;
825 .LM82:
826 0434 A092 0000 sts TimerM_mInterval,r10
254:timer.c **** TimerHPLClockSetInterval(TimerM_mInterval);
828 .LM83:
829 0438 8A2D mov r24,r10
830 043a 0E94 0000 call TimerHPLClockSetInterval
255:timer.c **** TimerM_setIntervalFlag = 0;
832 .LM84:
833 043e 1092 0000 sts TimerM_setIntervalFlag,__zero_reg__
256:timer.c **** PowerManagementAdjust();
835 .LM85:
836 0442 0E94 0000 call PowerManagementAdjust
837 .L45:
257:timer.c **** }
258:timer.c **** }
259:timer.c **** AtomicEnd(atomicState); }
839 .LM86:
840 0446 892D mov r24,r9
841 0448 0E94 0000 call AtomicEnd
842 .LBE15:
260:timer.c **** return SUCCESS;
844 .LM87:
845 044c CE01 movw r24,r28
846 .L42:
847 /* epilogue: frame size=0 */
848 044e DF91 pop r29
849 0450 CF91 pop r28
850 0452 1F91 pop r17
851 0454 0F91 pop r16
852 0456 FF90 pop r15
853 0458 EF90 pop r14
854 045a DF90 pop r13
855 045c CF90 pop r12
856 045e BF90 pop r11
857 0460 AF90 pop r10
858 0462 9F90 pop r9
859 0464 0895 ret
860 /* epilogue end (size=12) */
861 /* function TimerTimerStart size 120 (97) */
868 .global __vector_15
870 __vector_15:
261:timer.c **** }
262:timer.c ****
263:timer.c **** void __attribute((signal)) __vector_15(void)
264:timer.c **** {
872 .LM88:
873 /* prologue: frame size=0 */
874 0466 7894 sei
875 0468 1F92 push __zero_reg__
876 046a 0F92 push __tmp_reg__
877 046c 0FB6 in __tmp_reg__,__SREG__
878 046e 0F92 push __tmp_reg__
879 0470 1124 clr __zero_reg__
880 0472 2F93 push r18
881 0474 3F93 push r19
882 0476 4F93 push r20
883 0478 5F93 push r21
884 047a 6F93 push r22
885 047c 7F93 push r23
886 047e 8F93 push r24
887 0480 9F93 push r25
888 0482 AF93 push r26
889 0484 BF93 push r27
890 0486 EF93 push r30
891 0488 FF93 push r31
892 /* prologue end (size=18) */
893 .LBB16:
265:timer.c ****
266:timer.c **** { uint8_t atomicState = AtomicStart();
895 .LM89:
896 048a 0E94 0000 call AtomicStart
897 048e 982F mov r25,r24
267:timer.c **** {
268:timer.c **** if (HPLClock_set_flag) {
899 .LM90:
900 0490 8091 0000 lds r24,HPLClock_set_flag
901 0494 8823 tst r24
902 0496 69F0 breq .L48
269:timer.c **** HPLClock_mscale = HPLClock_nextScale;
904 .LM91:
905 0498 8091 0000 lds r24,HPLClock_nextScale
906 049c 8093 0000 sts HPLClock_mscale,r24
270:timer.c **** HPLClock_nextScale |= 0x8;
908 .LM92:
909 04a0 8860 ori r24,lo8(8)
910 04a2 8093 0000 sts HPLClock_nextScale,r24
271:timer.c **** * (volatile unsigned char *)(0x33 + 0x20) = HPLClock_nextScale;
912 .LM93:
913 04a6 83BF out 83-0x20,r24
272:timer.c ****
273:timer.c **** * (volatile unsigned char *)(0x31 + 0x20) = HPLClock_minterval;
915 .LM94:
916 04a8 8091 0000 lds r24,HPLClock_minterval
917 04ac 81BF out 81-0x20,r24
274:timer.c **** HPLClock_set_flag = 0;
919 .LM95:
920 04ae 1092 0000 sts HPLClock_set_flag,__zero_reg__
921 .L48:
275:timer.c **** }
276:timer.c **** }
277:timer.c **** AtomicEnd(atomicState); }
923 .LM96:
924 04b2 892F mov r24,r25
925 04b4 0E94 0000 call AtomicEnd
926 .LBE16:
927 .LBB17:
928 .LBB18:
930 .LM97:
931 04b8 80E0 ldi r24,lo8(pm(TimerHandleFire))
932 04ba 90E0 ldi r25,hi8(pm(TimerHandleFire))
933 04bc 0E94 0000 call OSPostTask
934 .LBE18:
935 .LBE17:
936 /* epilogue: frame size=0 */
937 04c0 FF91 pop r31
938 04c2 EF91 pop r30
939 04c4 BF91 pop r27
940 04c6 AF91 pop r26
941 04c8 9F91 pop r25
942 04ca 8F91 pop r24
943 04cc 7F91 pop r23
944 04ce 6F91 pop r22
945 04d0 5F91 pop r21
946 04d2 4F91 pop r20
947 04d4 3F91 pop r19
948 04d6 2F91 pop r18
949 04d8 0F90 pop __tmp_reg__
950 04da 0FBE out __SREG__,__tmp_reg__
951 04dc 0F90 pop __tmp_reg__
952 04de 1F90 pop __zero_reg__
953 04e0 1895 reti
954 /* epilogue end (size=17) */
955 /* function __vector_15 size 62 (27) */
960 .comm RecordPassed,30,1
961 .lcomm TimerM_mState,4
962 .lcomm TimerM_setIntervalFlag,1
963 .lcomm TimerM_mScale,1
964 .lcomm TimerM_mInterval,1
965 .lcomm TimerM_queue_head,1
966 .lcomm TimerM_queue_tail,1
967 .lcomm TimerM_queue_size,1
968 .lcomm TimerM_queue,2
969 .lcomm HPLClock_set_flag,1
970 .lcomm HPLClock_mscale,1
971 .lcomm HPLClock_nextScale,1
972 .lcomm HPLClock_minterval,1
973 .comm TimerM_mTimerList,18,1
988 .text
990 Letext:
991 /* File "timer.c": code 628 = 0x0274 ( 524), prologues 50, epilogues 54 */
DEFINED SYMBOLS
*ABS*:00000000 timer.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:86 .text:00000000 TimerHPLClockSetInterval
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:103 .text:00000004 TimerTimerStop
.bss:00000000 TimerM_mState
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:961 .bss:00000004 TimerM_setIntervalFlag
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:218 .text:000000cc TimerSignalOneTimer
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:966 .bss:00000009 TimerM_queue_size
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:964 .bss:00000007 TimerM_queue_head
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:967 .bss:0000000a TimerM_queue
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:299 .text:0000011e TimerHandleFire
*COM*:00000012 TimerM_mTimerList
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:963 .bss:00000006 TimerM_mInterval
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:965 .bss:00000008 TimerM_queue_tail
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:618 .text:00000318 TimerStdControlInit
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:962 .bss:00000005 TimerM_mScale
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:710 .text:00000378 TimerTimerStart
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:870 .text:00000466 __vector_15
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:968 .bss:0000000c HPLClock_set_flag
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:970 .bss:0000000e HPLClock_nextScale
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:969 .bss:0000000d HPLClock_mscale
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:971 .bss:0000000f HPLClock_minterval
*COM*:0000001e RecordPassed
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccMZaaaa.s:990 .text:000004e2 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
AtomicStart
AtomicEnd
Timer0_1_Fired
Timer0_0_Fired
OSPostTask
PowerManagementAdjust
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -