📄 level4.lst
字号:
784 02dc FF92 push r15
785 02de 0F93 push r16
786 02e0 1F93 push r17
787 02e2 CF93 push r28
788 /* prologue end (size=5) */
789 02e4 8C01 movw r16,r24
346:level4.c **** uint8_t i , weigan36_even_data , weigan36_odd_data , parity_bit , bit_cnt;
347:level4.c **** parity_bit = 1; //If use odd parity check , this bit must be 1 ;
790 .stabn 68,0,347,.LM106-Send_Weigan36
791 .LM106:
792 .LBB5:
793 02e6 21E0 ldi r18,lo8(1)
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 21
794 02e8 F22E mov r15,r18
348:level4.c **** for ( i = 0 ; i < 17 ; i++ )
795 .stabn 68,0,348,.LM107-Send_Weigan36
796 .LM107:
797 02ea C0E0 ldi r28,lo8(0)
798 .L102:
349:level4.c **** {
350:level4.c **** bit_cnt = i % 8 ;
799 .stabn 68,0,350,.LM108-Send_Weigan36
800 .LM108:
801 02ec 4C2F mov r20,r28
802 02ee 4770 andi r20,lo8(7)
351:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
803 .stabn 68,0,351,.LM109-Send_Weigan36
804 .LM109:
805 02f0 8C2F mov r24,r28
806 02f2 8695 lsr r24
807 02f4 8695 lsr r24
808 02f6 8695 lsr r24
809 02f8 F801 movw r30,r16
810 02fa E80F add r30,r24
811 02fc F11D adc r31,__zero_reg__
812 02fe 8081 ld r24,Z
813 0300 282F mov r18,r24
814 0302 3327 clr r19
815 0304 87E0 ldi r24,lo8(7)
816 0306 90E0 ldi r25,hi8(7)
817 0308 841B sub r24,r20
818 030a 9109 sbc r25,__zero_reg__
819 030c 02C0 rjmp 2f
820 030e 3595 1: asr r19
821 0310 2795 ror r18
822 0312 8A95 2: dec r24
823 0314 E2F7 brpl 1b
824 0316 822F mov r24,r18
825 0318 8170 andi r24,lo8(1)
826 031a F826 eor r15,r24
827 .stabn 68,0,348,.LM110-Send_Weigan36
828 .LM110:
829 031c CF5F subi r28,lo8(-(1))
830 031e C131 cpi r28,lo8(17)
831 0320 28F3 brlo .L102
832 0322 C1E1 ldi r28,lo8(17)
352:level4.c **** }
353:level4.c ****
354:level4.c **** weigan36_odd_data = parity_bit ;
833 .stabn 68,0,354,.LM111-Send_Weigan36
834 .LM111:
835 0324 EF2C mov r14,r15
355:level4.c **** wdt_reset( );
836 .stabn 68,0,355,.LM112-Send_Weigan36
837 .LM112:
838 /* #APP */
839 0326 A895 wdr
356:level4.c **** #ifdef WDT
357:level4.c **** WatchDog_Feed( );
840 .stabn 68,0,357,.LM113-Send_Weigan36
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 22
841 .LM113:
842 /* #NOAPP */
843 0328 00D0 rcall WatchDog_Feed
358:level4.c **** #endif
359:level4.c **** parity_bit = 0; //If use even parity check , this bit must be 0;
844 .stabn 68,0,359,.LM114-Send_Weigan36
845 .LM114:
846 032a FF24 clr r15
847 .L107:
360:level4.c **** for ( i = 17 ; i < 32 ; i++ )
361:level4.c **** {
362:level4.c **** bit_cnt = i % 8;
848 .stabn 68,0,362,.LM115-Send_Weigan36
849 .LM115:
850 032c 4C2F mov r20,r28
851 032e 4770 andi r20,lo8(7)
363:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
852 .stabn 68,0,363,.LM116-Send_Weigan36
853 .LM116:
854 0330 8C2F mov r24,r28
855 0332 8695 lsr r24
856 0334 8695 lsr r24
857 0336 8695 lsr r24
858 0338 F801 movw r30,r16
859 033a E80F add r30,r24
860 033c F11D adc r31,__zero_reg__
861 033e 8081 ld r24,Z
862 0340 282F mov r18,r24
863 0342 3327 clr r19
864 0344 87E0 ldi r24,lo8(7)
865 0346 90E0 ldi r25,hi8(7)
866 0348 841B sub r24,r20
867 034a 9109 sbc r25,__zero_reg__
868 034c 02C0 rjmp 2f
869 034e 3595 1: asr r19
870 0350 2795 ror r18
871 0352 8A95 2: dec r24
872 0354 E2F7 brpl 1b
873 0356 822F mov r24,r18
874 0358 8170 andi r24,lo8(1)
875 035a F826 eor r15,r24
876 .stabn 68,0,360,.LM117-Send_Weigan36
877 .LM117:
878 035c CF5F subi r28,lo8(-(1))
879 035e C032 cpi r28,lo8(32)
880 0360 28F3 brlo .L107
364:level4.c **** }
365:level4.c **** weigan36_even_data = parity_bit;
366:level4.c **** wdt_reset( );
881 .stabn 68,0,366,.LM118-Send_Weigan36
882 .LM118:
883 /* #APP */
884 0362 A895 wdr
367:level4.c **** #ifdef WDT
368:level4.c **** WatchDog_Feed( );
885 .stabn 68,0,368,.LM119-Send_Weigan36
886 .LM119:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 23
887 /* #NOAPP */
888 0364 00D0 rcall WatchDog_Feed
369:level4.c **** #endif
370:level4.c **** if ( weigan36_odd_data ) //Send O bit;
889 .stabn 68,0,370,.LM120-Send_Weigan36
890 .LM120:
891 0366 EE20 tst r14
892 0368 11F0 breq .L108
371:level4.c **** Send_Weigan1();
893 .stabn 68,0,371,.LM121-Send_Weigan36
894 .LM121:
895 036a 79D0 rcall Send_Weigan1
896 036c 01C0 rjmp .L109
897 .L108:
372:level4.c **** else
373:level4.c **** Send_Weigan0();
898 .stabn 68,0,373,.LM122-Send_Weigan36
899 .LM122:
900 036e 82D0 rcall Send_Weigan0
901 .L109:
374:level4.c **** for ( i = 0 ; i < 32 ; i++ ) //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
902 .stabn 68,0,374,.LM123-Send_Weigan36
903 .LM123:
904 0370 C0E0 ldi r28,lo8(0)
905 .L116:
375:level4.c **** {
376:level4.c **** bit_cnt = i % 8 ;
906 .stabn 68,0,376,.LM124-Send_Weigan36
907 .LM124:
908 0372 4C2F mov r20,r28
909 0374 4770 andi r20,lo8(7)
377:level4.c **** if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 ) // MSBit is sent first;
910 .stabn 68,0,377,.LM125-Send_Weigan36
911 .LM125:
912 0376 8C2F mov r24,r28
913 0378 8695 lsr r24
914 037a 8695 lsr r24
915 037c 8695 lsr r24
916 037e F801 movw r30,r16
917 0380 E80F add r30,r24
918 0382 F11D adc r31,__zero_reg__
919 0384 8081 ld r24,Z
920 0386 282F mov r18,r24
921 0388 3327 clr r19
922 038a 87E0 ldi r24,lo8(7)
923 038c 90E0 ldi r25,hi8(7)
924 038e 841B sub r24,r20
925 0390 9109 sbc r25,__zero_reg__
926 0392 02C0 rjmp 2f
927 0394 3595 1: asr r19
928 0396 2795 ror r18
929 0398 8A95 2: dec r24
930 039a E2F7 brpl 1b
931 039c 20FF sbrs r18,0
932 039e 02C0 rjmp .L114
378:level4.c **** Send_Weigan1();
933 .stabn 68,0,378,.LM126-Send_Weigan36
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 24
934 .LM126:
935 03a0 5ED0 rcall Send_Weigan1
936 03a2 01C0 rjmp .L112
937 .L114:
379:level4.c **** else
380:level4.c **** Send_Weigan0();
938 .stabn 68,0,380,.LM127-Send_Weigan36
939 .LM127:
940 03a4 67D0 rcall Send_Weigan0
941 .stabn 68,0,374,.LM128-Send_Weigan36
942 .LM128:
943 .L112:
944 03a6 CF5F subi r28,lo8(-(1))
945 03a8 C032 cpi r28,lo8(32)
946 03aa 18F3 brlo .L116
381:level4.c **** }
382:level4.c **** Send_Weigan0(); //Send I bit;
947 .stabn 68,0,382,.LM129-Send_Weigan36
948 .LM129:
949 03ac 63D0 rcall Send_Weigan0
383:level4.c **** Send_Weigan0(); //Send I bit;
950 .stabn 68,0,383,.LM130-Send_Weigan36
951 .LM130:
952 03ae 62D0 rcall Send_Weigan0
384:level4.c **** if ( weigan36_even_data ) //Send E bit;
953 .stabn 68,0,384,.LM131-Send_Weigan36
954 .LM131:
955 03b0 FF20 tst r15
956 03b2 11F0 breq .L117
385:level4.c **** Send_Weigan1();
957 .stabn 68,0,385,.LM132-Send_Weigan36
958 .LM132:
959 03b4 54D0 rcall Send_Weigan1
960 03b6 01C0 rjmp .L97
961 .L117:
386:level4.c **** else
387:level4.c **** Send_Weigan0();
962 .stabn 68,0,387,.LM133-Send_Weigan36
963 .LM133:
964 03b8 5DD0 rcall Send_Weigan0
388:level4.c **** }
965 .stabn 68,0,388,.LM134-Send_Weigan36
966 .LM134:
967 .L97:
968 .LBE5:
969 /* epilogue: frame size=0 */
970 03ba CF91 pop r28
971 03bc 1F91 pop r17
972 03be 0F91 pop r16
973 03c0 FF90 pop r15
974 03c2 EF90 pop r14
975 03c4 0895 ret
976 /* epilogue end (size=6) */
977 /* function Send_Weigan36 size 123 (112) */
978 .size Send_Weigan36, .-Send_Weigan36
979 .stabs "i:r(4,2)",64,0,346,28
980 .stabs "weigan36_odd_data:r(4,2)",64,0,346,14
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyKbaaa.s page 25
981 .stabs "parity_bit:r(4,2)",64,0,346,15
982 .stabs "bit_cnt:r(4,2)",64,0,346,20
983 .stabn 192,0,0,.LBB5-Send_Weigan36
984 .stabn 224,0,0,.LBE5-Send_Weigan36
985 .Lscope6:
986 .stabs "",36,0,0,.Lscope6-Send_Weigan36
987 .stabs "Send_Weigan44:F(0,20)",36,0,397,Send_Weigan44
988 .stabs "data:P(1,1)",64,0,396,28
989 .global Send_Weigan44
990 .type Send_Weigan44, @function
991 Send_Weigan44:
389:level4.c ****
390:level4.c **** // ********************************************************************************************
391:level4.c **** // Description : Send weigan44 model and encode according to weigan44 protocol.
392:level4.c **** // Return value: None.
393:level4.c **** // parameter : * data -- the point of the data to be encoded.
394:level4.c **** // ********************************************************************************************
395:level4.c ****
396:level4.c **** void Send_Weigan44( uint8_t * data )
397:level4.c **** {
992 .stabn 68,0,397,.LM135-Send_Weigan44
993 .LM135:
994 /* prologue: frame size=0 */
995 03c6 0F93 push r16
996 03c8 1F93 push r17
997 03ca CF93 push r28
998 03cc DF93 push r29
999 /* prologue end (size=4) */
1000 03ce EC01 movw r28,r24
398:level4.c **** uint8_t i , bit_cnt , weigan44_low_byte = 0;
1001 .stabn 68,0,398,.LM136-Send_Weigan44
1002 .LM136:
1003 .LBB6:
1004 03d0 10E0 ldi r17,lo8(0)
399:level4.c ****
400:level4.c **** for ( i = 0 ; i < 5 ; i++ )
1005 .stabn 68,0,400,.LM137-Send_Weigan44
1006 .LM137:
1007 03d2 012F mov r16,r17
1008 03d4 E0E0 ldi r30,lo8(weiga
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -