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