📄 level4.lst
字号:
644 026c 02C0 rjmp 2f
645 026e 9595 1: asr r25
646 0270 8795 ror r24
647 0272 4A95 2: dec r20
648 0274 E2F7 brpl 1b
649 0276 80FF sbrs r24,0
650 0278 0AC0 rjmp .L80
231:level4.c **** Send_Weigan1();
651 .stabn 68,0,231,.LM84-Send_Weigan34
652 .LM84:
653 027a F1D0 rcall Send_Weigan1
654 .stabn 68,0,227,.LM85-Send_Weigan34
655 .LM85:
656 .L78:
657 027c CF5F subi r28,lo8(-(1))
658 027e C032 cpi r28,lo8(32)
659 0280 38F3 brlo .L82
232:level4.c **** else
233:level4.c **** Send_Weigan0();
234:level4.c **** }
235:level4.c **** if ( weigan34_odd_data ) //Send O bit;
660 .stabn 68,0,235,.LM86-Send_Weigan34
661 .LM86:
662 0282 DD20 tst r13
663 0284 11F0 breq .L83
236:level4.c **** Send_Weigan1();
664 .stabn 68,0,236,.LM87-Send_Weigan34
665 .LM87:
666 0286 EBD0 rcall Send_Weigan1
667 0288 06C0 rjmp .L63
668 .L83:
237:level4.c **** else
238:level4.c **** Send_Weigan0();
669 .stabn 68,0,238,.LM88-Send_Weigan34
670 .LM88:
671 028a F4D0 rcall Send_Weigan0
672 028c 04C0 rjmp .L63
673 .L80:
674 .stabn 68,0,233,.LM89-Send_Weigan34
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 17
675 .LM89:
676 028e F2D0 rcall Send_Weigan0
677 0290 F5CF rjmp .L78
678 .L74:
679 .stabn 68,0,226,.LM90-Send_Weigan34
680 .LM90:
681 0292 F0D0 rcall Send_Weigan0
682 0294 D9CF rjmp .L75
239:level4.c **** }
683 .stabn 68,0,239,.LM91-Send_Weigan34
684 .LM91:
685 .L63:
686 .LBE4:
687 /* epilogue: frame size=0 */
688 0296 CF91 pop r28
689 0298 1F91 pop r17
690 029a 0F91 pop r16
691 029c FF90 pop r15
692 029e EF90 pop r14
693 02a0 DF90 pop r13
694 02a2 0895 ret
695 /* epilogue end (size=7) */
696 /* function Send_Weigan34 size 123 (110) */
697 .size Send_Weigan34, .-Send_Weigan34
698 .stabs "i:r(4,2)",64,0,200,28
699 .stabs "weigan34_even_data:r(4,2)",64,0,200,15
700 .stabs "parity_bit:r(4,2)",64,0,200,13
701 .stabs "bit_cnt:r(4,2)",64,0,200,18
702 .stabn 192,0,0,.LBB4-Send_Weigan34
703 .stabn 224,0,0,.LBE4-Send_Weigan34
704 .Lscope3:
705 .stabs "",36,0,0,.Lscope3-Send_Weigan34
706 .stabs "Send_Weigan36:F(0,20)",36,0,248,Send_Weigan36
707 .stabs "data:P(1,1)",64,0,247,16
708 .global Send_Weigan36
709 .type Send_Weigan36, @function
710 Send_Weigan36:
240:level4.c ****
241:level4.c **** // ********************************************************************************************
242:level4.c **** // Description : Send weigan36 model and encode according to weigan36 protocol.
243:level4.c **** // Return value: None.
244:level4.c **** // parameter : * data -- the point of the data to be encoded.
245:level4.c **** // ********************************************************************************************
246:level4.c ****
247:level4.c **** void Send_Weigan36( uint8_t * data )
248:level4.c **** {
711 .stabn 68,0,248,.LM92-Send_Weigan36
712 .LM92:
713 /* prologue: frame size=0 */
714 02a4 DF92 push r13
715 02a6 EF92 push r14
716 02a8 FF92 push r15
717 02aa 0F93 push r16
718 02ac 1F93 push r17
719 02ae CF93 push r28
720 /* prologue end (size=6) */
721 02b0 8C01 movw r16,r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 18
249:level4.c **** uint8_t i , weigan36_even_data , weigan36_odd_data , parity_bit , bit_cnt;
250:level4.c **** parity_bit = 1; //If use odd parity check , this bit must be 1 ;
722 .stabn 68,0,250,.LM93-Send_Weigan36
723 .LM93:
724 .LBB5:
725 02b2 51E0 ldi r21,lo8(1)
726 02b4 D52E mov r13,r21
251:level4.c **** for ( i = 0 ; i < 17 ; i++ )
727 .stabn 68,0,251,.LM94-Send_Weigan36
728 .LM94:
729 02b6 C0E0 ldi r28,lo8(0)
730 02b8 47E0 ldi r20,lo8(7)
731 02ba 50E0 ldi r21,hi8(7)
732 .L96:
252:level4.c **** {
253:level4.c **** bit_cnt = i % 8 ;
733 .stabn 68,0,253,.LM95-Send_Weigan36
734 .LM95:
735 02bc 2C2F mov r18,r28
736 02be 2770 andi r18,lo8(7)
254:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
737 .stabn 68,0,254,.LM96-Send_Weigan36
738 .LM96:
739 02c0 8C2F mov r24,r28
740 02c2 8695 lsr r24
741 02c4 8695 lsr r24
742 02c6 8695 lsr r24
743 02c8 F801 movw r30,r16
744 02ca E80F add r30,r24
745 02cc F11D adc r31,__zero_reg__
746 02ce 8081 ld r24,Z
747 02d0 9927 clr r25
748 02d2 BA01 movw r22,r20
749 02d4 621B sub r22,r18
750 02d6 7109 sbc r23,__zero_reg__
751 02d8 02C0 rjmp 2f
752 02da 9595 1: asr r25
753 02dc 8795 ror r24
754 02de 6A95 2: dec r22
755 02e0 E2F7 brpl 1b
756 02e2 8170 andi r24,lo8(1)
757 02e4 D826 eor r13,r24
758 .stabn 68,0,251,.LM97-Send_Weigan36
759 .LM97:
760 02e6 CF5F subi r28,lo8(-(1))
761 02e8 C131 cpi r28,lo8(17)
762 02ea 40F3 brlo .L96
763 02ec C1E1 ldi r28,lo8(17)
255:level4.c **** }
256:level4.c **** weigan36_odd_data = parity_bit ;
764 .stabn 68,0,256,.LM98-Send_Weigan36
765 .LM98:
766 02ee FD2C mov r15,r13
257:level4.c **** wdt_reset( );
767 .stabn 68,0,257,.LM99-Send_Weigan36
768 .LM99:
769 /* #APP */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 19
770 02f0 A895 wdr
258:level4.c **** #ifdef WDT
259:level4.c **** WatchDog_Feed( );
771 .stabn 68,0,259,.LM100-Send_Weigan36
772 .LM100:
773 /* #NOAPP */
774 02f2 00D0 rcall WatchDog_Feed
260:level4.c **** #endif
261:level4.c **** parity_bit = 0; //If use even parity check , this bit must be 0;
775 .stabn 68,0,261,.LM101-Send_Weigan36
776 .LM101:
777 02f4 DD24 clr r13
262:level4.c **** for ( i = 17 ; i < 32 ; i++ )
778 .stabn 68,0,262,.LM102-Send_Weigan36
779 .LM102:
780 02f6 47E0 ldi r20,lo8(7)
781 02f8 50E0 ldi r21,hi8(7)
782 .L101:
263:level4.c **** {
264:level4.c **** bit_cnt = i % 8;
783 .stabn 68,0,264,.LM103-Send_Weigan36
784 .LM103:
785 02fa 2C2F mov r18,r28
786 02fc 2770 andi r18,lo8(7)
265:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
787 .stabn 68,0,265,.LM104-Send_Weigan36
788 .LM104:
789 02fe 8C2F mov r24,r28
790 0300 8695 lsr r24
791 0302 8695 lsr r24
792 0304 8695 lsr r24
793 0306 F801 movw r30,r16
794 0308 E80F add r30,r24
795 030a F11D adc r31,__zero_reg__
796 030c 8081 ld r24,Z
797 030e 9927 clr r25
798 0310 BA01 movw r22,r20
799 0312 621B sub r22,r18
800 0314 7109 sbc r23,__zero_reg__
801 0316 02C0 rjmp 2f
802 0318 9595 1: asr r25
803 031a 8795 ror r24
804 031c 6A95 2: dec r22
805 031e E2F7 brpl 1b
806 0320 8170 andi r24,lo8(1)
807 0322 D826 eor r13,r24
808 .stabn 68,0,262,.LM105-Send_Weigan36
809 .LM105:
810 0324 CF5F subi r28,lo8(-(1))
811 0326 C032 cpi r28,lo8(32)
812 0328 40F3 brlo .L101
266:level4.c **** }
267:level4.c **** weigan36_even_data = parity_bit;
268:level4.c **** wdt_reset( );
813 .stabn 68,0,268,.LM106-Send_Weigan36
814 .LM106:
815 /* #APP */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 20
816 032a A895 wdr
269:level4.c **** #ifdef WDT
270:level4.c **** WatchDog_Feed( );
817 .stabn 68,0,270,.LM107-Send_Weigan36
818 .LM107:
819 /* #NOAPP */
820 032c 00D0 rcall WatchDog_Feed
271:level4.c **** #endif
272:level4.c **** if ( weigan36_odd_data ) //Send O bit;
821 .stabn 68,0,272,.LM108-Send_Weigan36
822 .LM108:
823 032e FF20 tst r15
824 0330 41F1 breq .L102
273:level4.c **** Send_Weigan1();
825 .stabn 68,0,273,.LM109-Send_Weigan36
826 .LM109:
827 0332 95D0 rcall Send_Weigan1
828 .L103:
274:level4.c **** else
275:level4.c **** Send_Weigan0();
276:level4.c **** for ( i = 0 ; i < 32 ; i++ ) //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
829 .stabn 68,0,276,.LM110-Send_Weigan36
830 .LM110:
831 0334 C0E0 ldi r28,lo8(0)
832 0336 47E0 ldi r20,lo8(7)
833 0338 E42E mov r14,r20
834 033a F12C mov r15,__zero_reg__
835 .L110:
277:level4.c **** {
278:level4.c **** bit_cnt = i % 8 ;
836 .stabn 68,0,278,.LM111-Send_Weigan36
837 .LM111:
838 033c 2C2F mov r18,r28
839 033e 2770 andi r18,lo8(7)
279:level4.c **** if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 ) // MSBit is sent first;
840 .stabn 68,0,279,.LM112-Send_Weigan36
841 .LM112:
842 0340 8C2F mov r24,r28
843 0342 8695 lsr r24
844 0344 8695 lsr r24
845 0346 8695 lsr r24
846 0348 F801 movw r30,r16
847 034a E80F add r30,r24
848 034c F11D adc r31,__zero_reg__
849 034e 8081 ld r24,Z
850 0350 9927 clr r25
851 0352 A701 movw r20,r14
852 0354 421B sub r20,r18
853 0356 5109 sbc r21,__zero_reg__
854 0358 02C0 rjmp 2f
855 035a 9595 1: asr r25
856 035c 8795 ror r24
857 035e 4A95 2: dec r20
858 0360 E2F7 brpl 1b
859 0362 80FF sbrs r24,0
860 0364 0CC0 rjmp .L108
280:level4.c **** Send_Weigan1();
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVbaaa.s page 21
861 .stabn 68,0,280,.LM113-Send_Weigan36
862 .LM113:
863 0366 7BD0 rcall Send_Weigan1
864 .stabn 68,0,276,.LM114-Send_Weigan36
865 .LM114:
866 .L106:
867 0368 CF5F subi r28,lo8(-(1))
868 036a C032 cpi r28,lo8(32)
869 036c 38F3 brlo .L110
281:level4.c **** else
282:level4.c **** Send_Weigan0();
283:level4.c **** }
284:level4.c **** Send_Weigan0(); //Send I bit;
870 .stabn 68,0,284,.LM115-Send_Weigan36
871 .LM115:
872 036e 82D0 rcall Send_Weigan0
285:level4.c **** Send_Weigan0(); //Send I bit;
873 .stabn 68,0,285,.LM116-Send_Weigan36
874 .LM116:
875 0370 81D0 rcall Send_Weigan0
286:level4.c **** if ( weigan36_even_data ) //Send E bit;
876 .stabn 68,0,286,.LM117-Send_Weigan36
877 .LM117:
878 0372 DD20 tst r13
879 0374 11F0 breq .L111
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -