📄 level3.lst
字号:
771 .stabs "i:r(4,2)",64,0,334,28
772 .stabn 192,0,0,.LBB8-ScaleTime
773 .stabn 224,0,0,.LBE8-ScaleTime
774 .Lscope6:
775 .stabs "",36,0,0,.Lscope6-ScaleTime
776 .stabs "__vector_4:F(0,20)",36,0,350,__vector_4
777 .global __vector_4
778 .type __vector_4, @function
779 __vector_4:
343:level3.c ****
344:level3.c **** // ==================================================================
345:level3.c **** // ==================================================================
346:level3.c **** // INTERRUPT ROUTINES
347:level3.c **** // ==================================================================
348:level3.c ****
349:level3.c **** SIGNAL ( SIG_OVERFLOW2 )
350:level3.c **** {
780 .stabn 68,0,350,.LM117-__vector_4
781 .LM117:
782 /* prologue: frame size=0 */
783 02dc 1F92 push __zero_reg__
784 02de 0F92 push __tmp_reg__
785 02e0 0FB6 in __tmp_reg__,__SREG__
786 02e2 0F92 push __tmp_reg__
787 02e4 1124 clr __zero_reg__
788 /* prologue end (size=5) */
351:level3.c **** /*
352:level3.c **** wdt_reset( );
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s page 21
353:level3.c **** #ifdef WDT
354:level3.c **** WatchDog_Feed( );
355:level3.c **** #endif
356:level3.c **** */
357:level3.c **** TIMSK = 0; //finished, disable all
789 .stabn 68,0,357,.LM118-__vector_4
790 .LM118:
791 02e6 19BE out 89-0x20,__zero_reg__
358:level3.c **** }
792 .stabn 68,0,358,.LM119-__vector_4
793 .LM119:
794 /* epilogue: frame size=0 */
795 02e8 0F90 pop __tmp_reg__
796 02ea 0FBE out __SREG__,__tmp_reg__
797 02ec 0F90 pop __tmp_reg__
798 02ee 1F90 pop __zero_reg__
799 02f0 1895 reti
800 /* epilogue end (size=5) */
801 /* function __vector_4 size 11 (1) */
802 .size __vector_4, .-__vector_4
803 .Lscope7:
804 .stabs "",36,0,0,.Lscope7-__vector_4
805 .stabs "store_bit:F(0,20)",36,0,367,store_bit
806 .stabs "b:P(4,2)",64,0,366,24
807 .stabs "v:P(4,2)",64,0,366,25
808 .global store_bit
809 .type store_bit, @function
810 store_bit:
359:level3.c **** // ==================================================================
360:level3.c **** // R E C E I V E R C O D E
361:level3.c **** // ==================================================================
362:level3.c ****
363:level3.c **** // ---------------------------------------------------------------
364:level3.c **** // store bit into capture buffer bytes
365:level3.c ****
366:level3.c **** void store_bit( uint8_t b , uint8_t v )
367:level3.c **** {
811 .stabn 68,0,367,.LM120-store_bit
812 .LM120:
813 /* prologue: frame size=0 */
814 /* prologue end (size=0) */
368:level3.c **** captured_byte = ( captured_byte * 2 ) + b;
815 .stabn 68,0,368,.LM121-store_bit
816 .LM121:
817 02f2 262D mov r18,r6
818 02f4 220F lsl r18
819 02f6 280F add r18,r24
820 02f8 622E mov r6,r18
369:level3.c **** captured_valid = ( captured_valid * 2 ) + v;
821 .stabn 68,0,369,.LM122-store_bit
822 .LM122:
823 02fa 872D mov r24,r7
824 02fc 880F lsl r24
825 02fe 860F add r24,r22
826 0300 782E mov r7,r24
370:level3.c ****
371:level3.c **** if ( captured_bit_count == 7 )
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s page 22
827 .stabn 68,0,371,.LM123-store_bit
828 .LM123:
829 0302 97E0 ldi r25,lo8(7)
830 0304 9916 cp r9,r25
831 0306 11F0 breq .L73
372:level3.c **** {
373:level3.c **** captured_bit_count = 0;
374:level3.c ****
375:level3.c **** if ( capture_cnt < CAPTURE_SIZE )
376:level3.c **** {
377:level3.c **** capture.decoded_data.capture_data[ capture_cnt ] = captured_byte;
378:level3.c **** capture.decoded_data.capture_valid[ capture_cnt++ ] = captured_valid;
379:level3.c **** }
380:level3.c **** else
381:level3.c **** {
382:level3.c **** TIMSK = 0; //finished, disable all
383:level3.c **** }
384:level3.c ****
385:level3.c **** }
386:level3.c **** else
387:level3.c **** {
388:level3.c **** captured_bit_count++;
832 .stabn 68,0,388,.LM124-store_bit
833 .LM124:
834 0308 9394 inc r9
389:level3.c **** }
390:level3.c **** }
835 .stabn 68,0,390,.LM125-store_bit
836 .LM125:
837 030a 0895 ret
838 .stabn 68,0,373,.LM126-store_bit
839 .LM126:
840 .L73:
841 030c 9924 clr r9
842 .stabn 68,0,375,.LM127-store_bit
843 .LM127:
844 030e 87FC sbrc r8,7
845 0310 0AC0 rjmp .L70
846 .stabn 68,0,377,.LM128-store_bit
847 .LM128:
848 0312 E82D mov r30,r8
849 0314 FF27 clr r31
850 0316 E050 subi r30,lo8(-(capture))
851 0318 F040 sbci r31,hi8(-(capture))
852 031a 2083 st Z,r18
853 .stabn 68,0,378,.LM129-store_bit
854 .LM129:
855 031c E058 subi r30,lo8(-(128))
856 031e FF4F sbci r31,hi8(-(128))
857 0320 8083 st Z,r24
858 0322 8394 inc r8
859 .stabn 68,0,390,.LM130-store_bit
860 .LM130:
861 0324 0895 ret
862 .L70:
863 .stabn 68,0,382,.LM131-store_bit
864 .LM131:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s page 23
865 0326 19BE out 89-0x20,__zero_reg__
866 .stabn 68,0,390,.LM132-store_bit
867 .LM132:
868 0328 0895 ret
869 /* epilogue: frame size=0 */
870 032a 0895 ret
871 /* epilogue end (size=1) */
872 /* function store_bit size 29 (28) */
873 .size store_bit, .-store_bit
874 .Lscope8:
875 .stabs "",36,0,0,.Lscope8-store_bit
876 .stabs "store_pulse:F(0,20)",36,0,398,store_pulse
877 .stabs "b:P(4,2)",64,0,397,25
878 .global store_pulse
879 .type store_pulse, @function
880 store_pulse:
391:level3.c ****
392:level3.c **** // ---------------------------------------------------------------
393:level3.c **** // debug routine stores the captured pulse lengths
394:level3.c **** // - note: too much data variables is probably detected by $(OBJTOOL)
395:level3.c **** // - warning only
396:level3.c ****
397:level3.c **** void store_pulse( uint8_t b )
398:level3.c **** {
881 .stabn 68,0,398,.LM133-store_pulse
882 .LM133:
883 /* prologue: frame size=0 */
884 /* prologue end (size=0) */
885 032c 982F mov r25,r24
399:level3.c **** if ( raw_cnt == SHORT_RAW_SIZE ) //reserve for message header
886 .stabn 68,0,399,.LM134-store_pulse
887 .LM134:
888 032e 80E8 ldi r24,lo8(-128)
889 0330 B816 cp r11,r24
890 0332 39F0 breq .L77
400:level3.c **** TIMSK = 0; //disable all
401:level3.c **** else
402:level3.c **** capture.raw_data[ raw_cnt++ ] = b;
891 .stabn 68,0,402,.LM135-store_pulse
892 .LM135:
893 0334 EB2D mov r30,r11
894 0336 FF27 clr r31
895 0338 E050 subi r30,lo8(-(capture+256))
896 033a F040 sbci r31,hi8(-(capture+256))
897 033c 9083 st Z,r25
898 033e B394 inc r11
403:level3.c **** }
899 .stabn 68,0,403,.LM136-store_pulse
900 .LM136:
901 0340 0895 ret
902 .stabn 68,0,400,.LM137-store_pulse
903 .LM137:
904 .L77:
905 0342 19BE out 89-0x20,__zero_reg__
906 .stabn 68,0,403,.LM138-store_pulse
907 .LM138:
908 0344 0895 ret
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s page 24
909 /* epilogue: frame size=0 */
910 0346 0895 ret
911 /* epilogue end (size=1) */
912 /* function store_pulse size 14 (13) */
913 .size store_pulse, .-store_pulse
914 .Lscope9:
915 .stabs "",36,0,0,.Lscope9-store_pulse
916 .stabs "type_A_polling:F(0,20)",36,0,410,type_A_polling
917 .global type_A_polling
918 .type type_A_polling, @function
919 type_A_polling:
404:level3.c ****
405:level3.c ****
406:level3.c ****
407:level3.c **** // ==================================================================
408:level3.c ****
409:level3.c **** void type_A_polling( void )
410:level3.c **** {
920 .stabn 68,0,410,.LM139-type_A_polling
921 .LM139:
922 /* prologue: frame size=0 */
923 0348 CF92 push r12
924 034a DF92 push r13
925 034c EF92 push r14
926 034e FF92 push r15
927 0350 0F93 push r16
928 0352 1F93 push r17
929 0354 CF93 push r28
930 0356 DF93 push r29
931 /* prologue end (size=8) */
411:level3.c **** //do not use local register variables
412:level3.c ****
413:level3.c **** uint8_t z = 0;
414:level3.c **** uint16_t capt , last_capture;
415:level3.c **** uint16_t icr;
416:level3.c **** uint8_t x , j;
417:level3.c **** uint8_t *sptr = &capture.raw_data[ RAW_DATA_A_OFFSET ];
932 .stabn 68,0,417,.LM140-type_A_polling
933 .LM140:
934 .LBB9:
935 0358 00E0 ldi r16,lo8(capture+288)
936 035a 10E0 ldi r17,hi8(capture+288)
418:level3.c **** uint16_t prev_capture , pulses = 0;
937 .stabn 68,0,418,.LM141-type_A_polling
938 .LM141:
939 035c 40E0 ldi r20,lo8(0)
940 035e 50E0 ldi r21,hi8(0)
419:level3.c **** j = 0;
941 .stabn 68,0,419,.LM142-type_A_polling
942 .LM142:
943 0360 CC24 clr r12
420:level3.c **** raw_cnt = RAW_DATA_A_OFFSET;
944 .stabn 68,0,420,.LM143-type_A_polling
945 .LM143:
946 0362 70E2 ldi r23,lo8(32)
947 0364 B72E mov r11,r23
421:level3.c **** last_capture = TCNT1;
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmgaaaa.s page 25
948 .stabn 68,0,421,.LM144-type_A_polling
949 .LM144:
950 0366 CCB5 in r28,76-0x20
951 0368 DDB5 in r29,(76)+1-0x20
422:level3.c **** ICR1 = last_capture;
952 .stabn 68,0,422,.LM145-type_A_polling
953 .LM145:
954 036a D7BD out (70)+1-0x20,r29
955 036c C6BD out 70-0x20,r28
423:level3.c **** prev_capture = last_capture;
956 .stabn 68,0,423,.LM146-type_A_polling
957 .LM146:
958 036e 7E01 movw r14,r28
424:level3.c ****
425:level3.c **** //WARNING! This code is very sensitive to latency
426:level3.c **** while ( bit_is_set( TIMSK , TOIE2 ) ) //wait until done
959 .stabn 68,0,426,.LM147-type_A_polling
960
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -