📄 level2.lst
字号:
315:level2.c **** // Return value: 16 bit binary.
316:level2.c **** // parameter : *data -- the point of the start data to be checked;
317:level2.c **** // len -- the number of data to be checked;
318:level2.c **** // ********************************************************************************************
319:level2.c **** uint16_t ISOCRCA( uint8_t *data , uint8_t len )
320:level2.c **** {
787 .stabn 68,0,320,.LM119-ISOCRCA
788 .LM119:
789 /* prologue: frame size=0 */
790 /* prologue end (size=0) */
791 027e DC01 movw r26,r24
321:level2.c **** uint16_t crc = 0x6363; //CRC preset
792 .stabn 68,0,321,.LM120-ISOCRCA
793 .LM120:
794 .LBB8:
795 0280 23E6 ldi r18,lo8(25443)
796 0282 33E6 ldi r19,hi8(25443)
322:level2.c **** uint8_t i, j;
323:level2.c **** const uint16_t poly = 0x8408; //CRC polynom
324:level2.c ****
325:level2.c **** for ( i = 0 ; i < len ; i++ )
797 .stabn 68,0,325,.LM121-ISOCRCA
798 .LM121:
799 0284 70E0 ldi r23,lo8(0)
800 0286 7617 cp r23,r22
801 0288 D0F4 brsh .L93
802 028a 48E0 ldi r20,lo8(-31736)
803 028c 54E8 ldi r21,hi8(-31736)
804 .L91:
326:level2.c **** {
327:level2.c **** crc ^= data[ i ];
805 .stabn 68,0,327,.LM122-ISOCRCA
806 .LM122:
807 028e FD01 movw r30,r26
808 0290 E70F add r30,r23
809 0292 F11D adc r31,__zero_reg__
810 0294 8081 ld r24,Z
811 0296 9927 clr r25
812 0298 2827 eor r18,r24
813 029a 3927 eor r19,r25
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s page 21
328:level2.c **** for ( j = 0 ; j < 8 ; j++ )
814 .stabn 68,0,328,.LM123-ISOCRCA
815 .LM123:
816 029c 80E0 ldi r24,lo8(0)
817 .L90:
329:level2.c **** {
330:level2.c **** if ( crc & 1 )
818 .stabn 68,0,330,.LM124-ISOCRCA
819 .LM124:
820 029e 20FF sbrs r18,0
821 02a0 0BC0 rjmp .L88
331:level2.c **** crc = ( crc >> 1 ) ^ poly;
822 .stabn 68,0,331,.LM125-ISOCRCA
823 .LM125:
824 02a2 3695 lsr r19
825 02a4 2795 ror r18
826 02a6 2427 eor r18,r20
827 02a8 3527 eor r19,r21
828 .stabn 68,0,328,.LM126-ISOCRCA
829 .LM126:
830 .L86:
831 02aa 8F5F subi r24,lo8(-(1))
832 02ac 8830 cpi r24,lo8(8)
833 02ae B8F3 brlo .L90
834 .stabn 68,0,325,.LM127-ISOCRCA
835 .LM127:
836 02b0 7F5F subi r23,lo8(-(1))
837 02b2 7617 cp r23,r22
838 02b4 60F3 brlo .L91
839 02b6 03C0 rjmp .L93
840 .L88:
332:level2.c **** else
333:level2.c **** crc = ( crc >> 1 );
841 .stabn 68,0,333,.LM128-ISOCRCA
842 .LM128:
843 02b8 3695 lsr r19
844 02ba 2795 ror r18
845 02bc F6CF rjmp .L86
846 .L93:
334:level2.c **** }
335:level2.c **** }
336:level2.c **** return crc;
337:level2.c **** }
847 .stabn 68,0,337,.LM129-ISOCRCA
848 .LM129:
849 .LBE8:
850 02be C901 movw r24,r18
851 /* epilogue: frame size=0 */
852 02c0 0895 ret
853 /* epilogue end (size=1) */
854 /* function ISOCRCA size 34 (33) */
855 .size ISOCRCA, .-ISOCRCA
856 .stabs "crc:r(4,4)",64,0,321,18
857 .stabs "i:r(4,2)",64,0,322,23
858 .stabs "j:r(4,2)",64,0,322,24
859 .stabn 192,0,0,.LBB8-ISOCRCA
860 .stabn 224,0,0,.LBE8-ISOCRCA
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s page 22
861 .Lscope9:
862 .stabs "",36,0,0,.Lscope9-ISOCRCA
863 .stabs "SearchValidBit:F(4,2)",36,0,346,SearchValidBit
864 .stabs "start:P(4,2)",64,0,345,20
865 .stabs "end:P(4,2)",64,0,345,22
866 .global SearchValidBit
867 .type SearchValidBit, @function
868 SearchValidBit:
338:level2.c ****
339:level2.c **** // ********************************************************************************************
340:level2.c **** // Description :Search the first valid data position in capture.decoded_data from start to end.
341:level2.c **** // Return :
342:level2.c **** // Parameter :
343:level2.c **** // ********************************************************************************************
344:level2.c ****
345:level2.c **** uint8_t SearchValidBit( uint8_t start , uint8_t end )
346:level2.c **** {
869 .stabn 68,0,346,.LM130-SearchValidBit
870 .LM130:
871 /* prologue: frame size=0 */
872 /* prologue end (size=0) */
873 02c2 482F mov r20,r24
347:level2.c **** uint8_t bitcnt = start % 8;
874 .stabn 68,0,347,.LM131-SearchValidBit
875 .LM131:
876 02c4 582F mov r21,r24
877 .LBB9:
878 02c6 5770 andi r21,lo8(7)
348:level2.c **** uint8_t byte = start / 8;
879 .stabn 68,0,348,.LM132-SearchValidBit
880 .LM132:
881 02c8 782F mov r23,r24
882 02ca 7695 lsr r23
883 02cc 7695 lsr r23
884 02ce 7695 lsr r23
349:level2.c **** uint8_t valid;
350:level2.c ****
351:level2.c **** while ( start < end )
885 .stabn 68,0,351,.LM133-SearchValidBit
886 .LM133:
887 02d0 8617 cp r24,r22
888 02d2 C0F4 brsh .L105
889 02d4 A7E0 ldi r26,lo8(7)
890 02d6 B0E0 ldi r27,hi8(7)
891 .L103:
352:level2.c **** {
353:level2.c **** valid = ( capture.decoded_data.capture_valid[ byte ] >> ( 7 - bitcnt ) ) & 1;
892 .stabn 68,0,353,.LM134-SearchValidBit
893 .LM134:
894 02d8 E72F mov r30,r23
895 02da FF27 clr r31
896 02dc E050 subi r30,lo8(-(capture+128))
897 02de F040 sbci r31,hi8(-(capture+128))
898 02e0 8081 ld r24,Z
899 02e2 9927 clr r25
900 02e4 9D01 movw r18,r26
901 02e6 251B sub r18,r21
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s page 23
902 02e8 3109 sbc r19,__zero_reg__
903 02ea 02C0 rjmp 2f
904 02ec 9595 1: asr r25
905 02ee 8795 ror r24
906 02f0 2A95 2: dec r18
907 02f2 E2F7 brpl 1b
354:level2.c **** if ( valid == 0 ) //return 1st valid bit position
908 .stabn 68,0,354,.LM135-SearchValidBit
909 .LM135:
910 02f4 80FF sbrs r24,0
911 02f6 0CC0 rjmp .L106
355:level2.c **** return start;
356:level2.c **** if ( bitcnt == 7 )
912 .stabn 68,0,356,.LM136-SearchValidBit
913 .LM136:
914 02f8 5730 cpi r21,lo8(7)
915 02fa 39F0 breq .L107
357:level2.c **** {
358:level2.c **** bitcnt = 0;
359:level2.c **** byte++;
360:level2.c **** }
361:level2.c **** else
362:level2.c **** bitcnt++;
916 .stabn 68,0,362,.LM137-SearchValidBit
917 .LM137:
918 02fc 5F5F subi r21,lo8(-(1))
919 .L102:
363:level2.c **** start++;
920 .stabn 68,0,363,.LM138-SearchValidBit
921 .LM138:
922 02fe 4F5F subi r20,lo8(-(1))
923 0300 4617 cp r20,r22
924 0302 50F3 brlo .L103
925 .L105:
364:level2.c **** }
365:level2.c **** return 255; //no valid bit
926 .stabn 68,0,365,.LM139-SearchValidBit
927 .LM139:
928 0304 8FEF ldi r24,lo8(255)
929 0306 90E0 ldi r25,hi8(255)
366:level2.c **** }
930 .stabn 68,0,366,.LM140-SearchValidBit
931 .LM140:
932 0308 0895 ret
933 .stabn 68,0,358,.LM141-SearchValidBit
934 .LM141:
935 .L107:
936 030a 50E0 ldi r21,lo8(0)
937 .stabn 68,0,359,.LM142-SearchValidBit
938 .LM142:
939 030c 7F5F subi r23,lo8(-(1))
940 030e F7CF rjmp .L102
941 .stabn 68,0,355,.LM143-SearchValidBit
942 .LM143:
943 .L106:
944 0310 842F mov r24,r20
945 0312 9927 clr r25
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s page 24
946 .stabn 68,0,366,.LM144-SearchValidBit
947 .LM144:
948 0314 0895 ret
949 .LBE9:
950 /* epilogue: frame size=0 */
951 /* epilogue: noreturn */
952 /* epilogue end (size=0) */
953 /* function SearchValidBit size 43 (43) */
954 .size SearchValidBit, .-SearchValidBit
955 .stabs "bitcnt:r(4,2)",64,0,347,21
956 .stabs "byte:r(4,2)",64,0,348,23
957 .stabn 192,0,0,.LBB9-SearchValidBit
958 .stabn 224,0,0,.LBE9-SearchValidBit
959 .Lscope10:
960 .stabs "",36,0,0,.Lscope10-SearchValidBit
961 .stabs "ExtractTypeAData:F(4,2)",36,0,375,ExtractTypeAData
962 .stabs "size:P(4,2)",64,0,374,28
963 .global ExtractTypeAData
964 .type ExtractTypeAData, @function
965 ExtractTypeAData:
367:level2.c ****
368:level2.c ****
369:level2.c ****
370:level2.c **** // ********************************************************************************************
371:level2.c **** // Extracts decoded data of type A from capture.decoded_data to data_buffer in bytes.
372:level2.c **** // ********************************************************************************************
373:level2.c ****
374:level2.c **** uint8_t ExtractTypeAData( uint8_t size )
375:level2.c **** {
966 .stabn 68,0,375,.LM145-ExtractTypeAData
967 .LM145:
968 /* prologue: frame size=0 */
969 0316 FF92 push r15
970 0318 0F93 push r16
971 031a 1F93 push r17
972 031c CF93 push r28
973 /* prologue end (size=4) */
974 031e C82F mov r28,r24
376:level2.c **** uint8_t value = 0;
975 .stabn 68,0,376,.LM146-ExtractTypeAData
976 .LM146:
977 .LBB10:
978 0320 10E0 ldi r17,lo8(0)
377:level2.c **** uint8_t valid;
378:level2.c **** uint8_t pom;
379:level2.c **** uint8_t phase;
380:level2.c **** uint8_t phase_position;
381:level2.c **** uint8_t start;
382:level2.c **** uint8_t bitcnt;
383:level2.c **** uint8_t ptr = 0;
979 .stabn 68,0,383,.LM147-ExtractTypeAData
980 .LM147:
981 0322 012F mov r16,r17
384:level2.c **** uint8_t parity = 0;
982 .stabn 68,0,384,.LM148-ExtractTypeAData
983 .LM148:
984 0324 F12E mov r15,r17
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccSOaaaa.s page 25
385:level2.c ****
386:level2.c **** pom = SearchValidBit( 0 , 7 ); //find the first valid bit in 0th byte of capture_va
985
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -