📄 level4.lst
字号:
884 .stabs "parity_bit:r(4,2)",64,0,246,13
885 .stabs "bit_cnt:r(4,2)",64,0,246,18
886 .stabn 192,0,0,.LBB5-Send_Weigan36
887 .stabn 224,0,0,.LBE5-Send_Weigan36
888 .Lscope4:
889 .stabs "",36,0,0,.Lscope4-Send_Weigan36
890 .stabs "Send_Weigan44:F(0,20)",36,0,291,Send_Weigan44
891 .stabs "data:P(1,1)",64,0,290,16
892 .global Send_Weigan44
893 .type Send_Weigan44, @function
894 Send_Weigan44:
283:level4.c ****
284:level4.c **** // ********************************************************************************************
285:level4.c **** // Description : Send weigan44 model and encode according to weigan44 protocol.
286:level4.c **** // Return value: None.
287:level4.c **** // parameter : * data -- the point of the data to be encoded.
288:level4.c **** // ********************************************************************************************
289:level4.c ****
290:level4.c **** void Send_Weigan44( uint8_t * data )
291:level4.c **** {
895 .stabn 68,0,291,.LM117-Send_Weigan44
896 .LM117:
897 /* prologue: frame size=0 */
898 0388 DF92 push r13
899 038a EF92 push r14
900 038c FF92 push r15
901 038e 0F93 push r16
902 0390 1F93 push r17
903 0392 CF93 push r28
904 /* prologue end (size=6) */
905 0394 8C01 movw r16,r24
292:level4.c **** uint8_t i , bit_cnt , weigan44_low_byte = 0;
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 22
906 .stabn 68,0,292,.LM118-Send_Weigan44
907 .LM118:
908 .LBB6:
909 0396 C0E0 ldi r28,lo8(0)
293:level4.c **** /*
294:level4.c **** for ( i = 0 ; i < 40 ; i += 4 )
295:level4.c **** {
296:level4.c **** bit_cnt = i % 8;
297:level4.c **** weigan44_low_byte ^= ( data[ i / 8 ] >> ( 4 - bit_cnt ) ) & 0x0F ;
298:level4.c **** }
299:level4.c **** */
300:level4.c **** for ( i = 0 ; i < 5 ; i++ )
910 .stabn 68,0,300,.LM119-Send_Weigan44
911 .LM119:
912 0398 DC2E mov r13,r28
913 039a E0E0 ldi r30,lo8(weigan_data)
914 039c F0E0 ldi r31,hi8(weigan_data)
915 .L124:
301:level4.c **** weigan44_low_byte ^= weigan_data[ i ];
916 .stabn 68,0,301,.LM120-Send_Weigan44
917 .LM120:
918 039e 8191 ld r24,Z+
919 03a0 D826 eor r13,r24
920 .stabn 68,0,300,.LM121-Send_Weigan44
921 .LM121:
922 03a2 CF5F subi r28,lo8(-(1))
923 03a4 C530 cpi r28,lo8(5)
924 03a6 D8F3 brlo .L124
302:level4.c **** weigan44_low_byte = ( weigan44_low_byte >> 4 ) ^ ( weigan44_low_byte & 0x0F );
925 .stabn 68,0,302,.LM122-Send_Weigan44
926 .LM122:
927 03a8 8D2D mov r24,r13
928 03aa 8295 swap r24
929 03ac 8F70 andi r24,0x0f
930 03ae 4FE0 ldi r20,lo8(15)
931 03b0 D422 and r13,r20
932 03b2 D826 eor r13,r24
303:level4.c **** wdt_reset( );
933 .stabn 68,0,303,.LM123-Send_Weigan44
934 .LM123:
935 /* #APP */
936 03b4 A895 wdr
304:level4.c **** for( i = 0 ; i < 40 ; i++ ) //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
937 .stabn 68,0,304,.LM124-Send_Weigan44
938 .LM124:
939 /* #NOAPP */
940 03b6 C0E0 ldi r28,lo8(0)
941 03b8 67E0 ldi r22,lo8(7)
942 03ba E62E mov r14,r22
943 03bc F12C mov r15,__zero_reg__
944 .L131:
305:level4.c **** {
306:level4.c **** bit_cnt = i % 8;
945 .stabn 68,0,306,.LM125-Send_Weigan44
946 .LM125:
947 03be 2C2F mov r18,r28
948 03c0 2770 andi r18,lo8(7)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 23
307:level4.c **** if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 )
949 .stabn 68,0,307,.LM126-Send_Weigan44
950 .LM126:
951 03c2 8C2F mov r24,r28
952 03c4 8695 lsr r24
953 03c6 8695 lsr r24
954 03c8 8695 lsr r24
955 03ca F801 movw r30,r16
956 03cc E80F add r30,r24
957 03ce F11D adc r31,__zero_reg__
958 03d0 8081 ld r24,Z
959 03d2 9927 clr r25
960 03d4 A701 movw r20,r14
961 03d6 421B sub r20,r18
962 03d8 5109 sbc r21,__zero_reg__
963 03da 02C0 rjmp 2f
964 03dc 9595 1: asr r25
965 03de 8795 ror r24
966 03e0 4A95 2: dec r20
967 03e2 E2F7 brpl 1b
968 03e4 80FF sbrs r24,0
969 03e6 16C0 rjmp .L129
308:level4.c **** Send_Weigan1();
970 .stabn 68,0,308,.LM127-Send_Weigan44
971 .LM127:
972 03e8 23D0 rcall Send_Weigan1
973 .stabn 68,0,304,.LM128-Send_Weigan44
974 .LM128:
975 .L127:
976 03ea CF5F subi r28,lo8(-(1))
977 03ec C832 cpi r28,lo8(40)
978 03ee 38F3 brlo .L131
309:level4.c **** else
310:level4.c **** Send_Weigan0();
311:level4.c **** }
312:level4.c **** for( i = 4 ; i > 0 ; i-- ) //Send XXXX ;
979 .stabn 68,0,312,.LM129-Send_Weigan44
980 .LM129:
981 03f0 C4E0 ldi r28,lo8(4)
982 03f2 ED2C mov r14,r13
983 03f4 FF24 clr r15
984 03f6 03E0 ldi r16,lo8(3)
985 03f8 10E0 ldi r17,hi8(3)
986 .L138:
313:level4.c **** {
314:level4.c **** if ( ( weigan44_low_byte >> ( i - 1 ) ) & 0x01 )
987 .stabn 68,0,314,.LM130-Send_Weigan44
988 .LM130:
989 03fa C701 movw r24,r14
990 03fc 002E mov r0,r16
991 03fe 02C0 rjmp 2f
992 0400 9595 1: asr r25
993 0402 8795 ror r24
994 0404 0A94 2: dec r0
995 0406 E2F7 brpl 1b
996 0408 80FF sbrs r24,0
997 040a 02C0 rjmp .L136
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 24
315:level4.c **** Send_Weigan1( );
998 .stabn 68,0,315,.LM131-Send_Weigan44
999 .LM131:
1000 040c 11D0 rcall Send_Weigan1
1001 040e 04C0 rjmp .L134
1002 .L136:
316:level4.c **** else
317:level4.c **** Send_Weigan0( );
1003 .stabn 68,0,317,.LM132-Send_Weigan44
1004 .LM132:
1005 0410 1AD0 rcall Send_Weigan0
1006 0412 02C0 rjmp .L134
1007 .L129:
1008 .stabn 68,0,310,.LM133-Send_Weigan44
1009 .LM133:
1010 0414 18D0 rcall Send_Weigan0
1011 0416 E9CF rjmp .L127
1012 .stabn 68,0,312,.LM134-Send_Weigan44
1013 .LM134:
1014 .L134:
1015 0418 C150 subi r28,lo8(-(-1))
1016 041a 0150 subi r16,lo8(-(-1))
1017 041c 1040 sbci r17,hi8(-(-1))
1018 041e CC23 tst r28
1019 0420 61F7 brne .L138
318:level4.c **** }
319:level4.c **** }
1020 .stabn 68,0,319,.LM135-Send_Weigan44
1021 .LM135:
1022 .LBE6:
1023 /* epilogue: frame size=0 */
1024 0422 CF91 pop r28
1025 0424 1F91 pop r17
1026 0426 0F91 pop r16
1027 0428 FF90 pop r15
1028 042a EF90 pop r14
1029 042c DF90 pop r13
1030 042e 0895 ret
1031 /* epilogue end (size=7) */
1032 /* function Send_Weigan44 size 86 (73) */
1033 .size Send_Weigan44, .-Send_Weigan44
1034 .stabs "i:r(4,2)",64,0,292,28
1035 .stabs "weigan44_low_byte:r(4,2)",64,0,292,13
1036 .stabn 192,0,0,.LBB6-Send_Weigan44
1037 .stabn 224,0,0,.LBE6-Send_Weigan44
1038 .Lscope5:
1039 .stabs "",36,0,0,.Lscope5-Send_Weigan44
1040 .stabs "Send_Weigan1:F(0,20)",36,0,324,Send_Weigan1
1041 .global Send_Weigan1
1042 .type Send_Weigan1, @function
1043 Send_Weigan1:
320:level4.c ****
321:level4.c ****
322:level4.c ****
323:level4.c **** void Send_Weigan1( void )
324:level4.c **** {
1044 .stabn 68,0,324,.LM136-Send_Weigan1
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 25
1045 .LM136:
1046 /* prologue: frame size=0 */
1047 /* prologue end (size=0) */
325:level4.c **** sbi( PORTB , WEIGAN_1 );
1048 .stabn 68,0,325,.LM137-Send_Weigan1
1049 .LM137:
1050 0430 C29A sbi 56-0x20,2
326:level4.c **** Delayus( 100 );
1051 .stabn 68,0,326,.LM138-Send_Weigan1
1052 .LM138:
1053 0432 84E6 ldi r24,lo8(100)
1054 0434 90E0 ldi r25,hi8(100)
1055 0436 00D0 rcall Delayus
327:level4.c **** cbi( PORTB , WEIGAN_1 );
1056 .stabn 68,0,327,.LM139-Send_Weigan1
1057 .LM139:
1058 0438 C298 cbi 56-0x20,2
328:level4.c **** Delayus( 1500 );
1059 .stabn 68,0,328,.LM140-Send_Weigan1
1060 .LM140:
1061 043a 8CED ldi r24,lo8(1500)
1062 043c 95E0 ldi r25,hi8(1500)
1063 043e 00D0 rcall Delayus
329:level4.c **** wdt_reset( );
1064 .stabn 68,0,329,.LM141-Send_Weigan1
1065 .LM141:
1066 /* #APP */
1067 0440 A895 wdr
330:level4.c **** #ifdef WDT
331:level4.c **** WatchDog_Feed( );
1068 .stabn 68,0,331,.LM142-Send_Weigan1
1069 .LM142:
1070 /* #NOAPP */
1071 0442 00D0 rcall WatchDog_Feed
332:level4.c **** #endif
333:level4.c **** }
1072 .stabn 68,0,333,.LM143-Send_Weigan1
1073 .LM143:
1074 /* epilogue: frame size=0 */
1075 0444 0895 ret
1076 /* epilogue end (size=1) */
1077 /* function Send_Weigan1 size 12 (11) */
1078 .size Send_Weigan1, .-Send_Weigan1
1079 .Lscope6:
1080 .stabs "",36,0,0,.Lscope6-Send_Weigan1
1081 .stabs "Send_Weigan0:F(0,20)",36,0,336,Send_Weigan0
1082 .global Send_Weigan0
1083 .type Send_Weigan0, @function
1084 Send_Weigan0:
334:level4.c ****
335:level4.c **** void Send_Weigan0( void )
336:level4.c **** {
1085 .stabn 68,0,336,.LM144-Send_Weigan0
1086 .LM144:
1087 /* prologue: frame size=0 */
1088 /* prologue end (size=0) */
337:level4.c **** sbi( PORTB , WEIGAN_0 );
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 26
1089 .stabn 68,0,337,.LM145-Send_Weigan0
1090 .LM145:
1091 0446 C19A sbi 56-0x20,1
338:level4.c **** Delayus( 100 );
1092 .stabn 68,0,338,.LM146-Send_Weigan0
1093 .LM146:
1094 0448 84E6 ldi r24,lo8(100)
1095 044a 90E0 ldi r25,hi8(100)
1096 044c 00D0 rcall Delayus
339:level4.c **** cbi( PORTB , WEIGAN_0 );
1097 .stabn 68,0,339,.LM147-Send_Weigan0
1098 .LM147:
1099 044e C198 cbi 56-0x20,1
340:level4.c **** Delayus( 1500 );
1100 .stabn 68,0,340,.LM148-Send_Weigan0
1101 .LM148:
1102 0450 8CED ldi r24,lo8(1500)
1103 0452 95E0 ldi r25,hi8(1500)
1104 0454 00D0 rcall Delayus
341:level4.c **** wdt_reset( );
1105 .stabn 68,0,341,.LM149-Send_Weigan0
1106 .LM149:
1107 /* #APP */
1108 0456 A895 wdr
342:level4.c **** #ifdef WDT
343:level4.c **** WatchDog_Feed( );
1109 .stabn 68,0,343,.LM150-Send_Weigan0
1110 .LM150:
1111 /*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -