📄 level4.lst
字号:
399 0162 2770 andi r18,lo8(7)
184:level4.c **** if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 ) //MSBit is sent first;
400 .stabn 68,0,184,.LM52-Send_Weigan26
401 .LM52:
402 0164 8C2F mov r24,r28
403 0166 8695 lsr r24
404 0168 8695 lsr r24
405 016a 8695 lsr r24
406 016c F801 movw r30,r16
407 016e E80F add r30,r24
408 0170 F11D adc r31,__zero_reg__
409 0172 8081 ld r24,Z
410 0174 9927 clr r25
411 0176 A701 movw r20,r14
412 0178 421B sub r20,r18
413 017a 5109 sbc r21,__zero_reg__
414 017c 02C0 rjmp 2f
415 017e 9595 1: asr r25
416 0180 8795 ror r24
417 0182 4A95 2: dec r20
418 0184 E2F7 brpl 1b
419 0186 80FF sbrs r24,0
420 0188 0AC0 rjmp .L52
185:level4.c **** Send_Weigan1();
421 .stabn 68,0,185,.LM53-Send_Weigan26
422 .LM53:
423 018a 52D1 rcall Send_Weigan1
424 .stabn 68,0,181,.LM54-Send_Weigan26
425 .LM54:
426 .L50:
427 018c CF5F subi r28,lo8(-(1))
428 018e C032 cpi r28,lo8(32)
429 0190 38F3 brlo .L54
186:level4.c **** else
187:level4.c **** Send_Weigan0();
188:level4.c **** }
189:level4.c **** if ( weigan26_odd_data ) //Send O bit;
430 .stabn 68,0,189,.LM55-Send_Weigan26
431 .LM55:
432 0192 DD20 tst r13
433 0194 11F0 breq .L55
190:level4.c **** Send_Weigan1();
434 .stabn 68,0,190,.LM56-Send_Weigan26
435 .LM56:
436 0196 4CD1 rcall Send_Weigan1
437 0198 06C0 rjmp .L35
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 12
438 .L55:
191:level4.c **** else
192:level4.c **** Send_Weigan0();
439 .stabn 68,0,192,.LM57-Send_Weigan26
440 .LM57:
441 019a 55D1 rcall Send_Weigan0
442 019c 04C0 rjmp .L35
443 .L52:
444 .stabn 68,0,187,.LM58-Send_Weigan26
445 .LM58:
446 019e 53D1 rcall Send_Weigan0
447 01a0 F5CF rjmp .L50
448 .L46:
449 .stabn 68,0,180,.LM59-Send_Weigan26
450 .LM59:
451 01a2 51D1 rcall Send_Weigan0
452 01a4 D9CF rjmp .L47
193:level4.c **** }
453 .stabn 68,0,193,.LM60-Send_Weigan26
454 .LM60:
455 .L35:
456 .LBE3:
457 /* epilogue: frame size=0 */
458 01a6 CF91 pop r28
459 01a8 1F91 pop r17
460 01aa 0F91 pop r16
461 01ac FF90 pop r15
462 01ae EF90 pop r14
463 01b0 DF90 pop r13
464 01b2 0895 ret
465 /* epilogue end (size=7) */
466 /* function Send_Weigan26 size 121 (108) */
467 .size Send_Weigan26, .-Send_Weigan26
468 .stabs "i:r(4,2)",64,0,160,28
469 .stabs "weigan26_even_data:r(4,2)",64,0,160,22
470 .stabs "parity_bit:r(4,2)",64,0,160,13
471 .stabs "bit_cnt:r(4,2)",64,0,160,18
472 .stabn 192,0,0,.LBB3-Send_Weigan26
473 .stabn 224,0,0,.LBE3-Send_Weigan26
474 .Lscope2:
475 .stabs "",36,0,0,.Lscope2-Send_Weigan26
476 .stabs "Send_Weigan34:F(0,20)",36,0,202,Send_Weigan34
477 .stabs "data:P(1,1)",64,0,201,16
478 .global Send_Weigan34
479 .type Send_Weigan34, @function
480 Send_Weigan34:
194:level4.c ****
195:level4.c **** // ********************************************************************************************
196:level4.c **** // Description : Send weigan34 model and encode according to weigan34 protocol.
197:level4.c **** // Return value: None.
198:level4.c **** // parameter : * data -- the point of the data to be encoded.
199:level4.c **** // ********************************************************************************************
200:level4.c ****
201:level4.c **** void Send_Weigan34( uint8_t * data )
202:level4.c **** {
481 .stabn 68,0,202,.LM61-Send_Weigan34
482 .LM61:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 13
483 /* prologue: frame size=0 */
484 01b4 DF92 push r13
485 01b6 EF92 push r14
486 01b8 FF92 push r15
487 01ba 0F93 push r16
488 01bc 1F93 push r17
489 01be CF93 push r28
490 /* prologue end (size=6) */
491 01c0 8C01 movw r16,r24
203:level4.c **** uint8_t i , weigan34_even_data , weigan34_odd_data , parity_bit , bit_cnt;
204:level4.c **** parity_bit = 0; //If use even parity check , this bit must be 0;
492 .stabn 68,0,204,.LM62-Send_Weigan34
493 .LM62:
494 .LBB4:
495 01c2 DD24 clr r13
205:level4.c **** for ( i = 0 ; i < 16 ; i++ )
496 .stabn 68,0,205,.LM63-Send_Weigan34
497 .LM63:
498 01c4 CD2D mov r28,r13
499 01c6 47E0 ldi r20,lo8(7)
500 01c8 50E0 ldi r21,hi8(7)
501 .L68:
206:level4.c **** {
207:level4.c **** bit_cnt = i % 8 ;
502 .stabn 68,0,207,.LM64-Send_Weigan34
503 .LM64:
504 01ca 2C2F mov r18,r28
505 01cc 2770 andi r18,lo8(7)
208:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
506 .stabn 68,0,208,.LM65-Send_Weigan34
507 .LM65:
508 01ce 8C2F mov r24,r28
509 01d0 8695 lsr r24
510 01d2 8695 lsr r24
511 01d4 8695 lsr r24
512 01d6 F801 movw r30,r16
513 01d8 E80F add r30,r24
514 01da F11D adc r31,__zero_reg__
515 01dc 8081 ld r24,Z
516 01de 9927 clr r25
517 01e0 BA01 movw r22,r20
518 01e2 621B sub r22,r18
519 01e4 7109 sbc r23,__zero_reg__
520 01e6 02C0 rjmp 2f
521 01e8 9595 1: asr r25
522 01ea 8795 ror r24
523 01ec 6A95 2: dec r22
524 01ee E2F7 brpl 1b
525 01f0 8170 andi r24,lo8(1)
526 01f2 D826 eor r13,r24
527 .stabn 68,0,205,.LM66-Send_Weigan34
528 .LM66:
529 01f4 CF5F subi r28,lo8(-(1))
530 01f6 C031 cpi r28,lo8(16)
531 01f8 40F3 brlo .L68
532 01fa C0E1 ldi r28,lo8(16)
209:level4.c **** }
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 14
210:level4.c **** weigan34_even_data = parity_bit ;
533 .stabn 68,0,210,.LM67-Send_Weigan34
534 .LM67:
535 01fc 6D2D mov r22,r13
211:level4.c **** wdt_reset( );
536 .stabn 68,0,211,.LM68-Send_Weigan34
537 .LM68:
538 /* #APP */
539 01fe A895 wdr
212:level4.c **** parity_bit = 1; //If use odd parity check , this bit must be 1 ;
540 .stabn 68,0,212,.LM69-Send_Weigan34
541 .LM69:
542 /* #NOAPP */
543 0200 31E0 ldi r19,lo8(1)
544 0202 D32E mov r13,r19
213:level4.c **** for ( i = 16 ; i < 32 ; i++ )
545 .stabn 68,0,213,.LM70-Send_Weigan34
546 .LM70:
547 0204 47E0 ldi r20,lo8(7)
548 0206 50E0 ldi r21,hi8(7)
549 .L73:
214:level4.c **** {
215:level4.c **** bit_cnt = i % 8;
550 .stabn 68,0,215,.LM71-Send_Weigan34
551 .LM71:
552 0208 2C2F mov r18,r28
553 020a 2770 andi r18,lo8(7)
216:level4.c **** parity_bit ^= ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01;
554 .stabn 68,0,216,.LM72-Send_Weigan34
555 .LM72:
556 020c 8C2F mov r24,r28
557 020e 8695 lsr r24
558 0210 8695 lsr r24
559 0212 8695 lsr r24
560 0214 F801 movw r30,r16
561 0216 E80F add r30,r24
562 0218 F11D adc r31,__zero_reg__
563 021a 8081 ld r24,Z
564 021c 9927 clr r25
565 021e FA01 movw r30,r20
566 0220 E21B sub r30,r18
567 0222 F109 sbc r31,__zero_reg__
568 0224 02C0 rjmp 2f
569 0226 9595 1: asr r25
570 0228 8795 ror r24
571 022a EA95 2: dec r30
572 022c E2F7 brpl 1b
573 022e 8170 andi r24,lo8(1)
574 0230 D826 eor r13,r24
575 .stabn 68,0,213,.LM73-Send_Weigan34
576 .LM73:
577 0232 CF5F subi r28,lo8(-(1))
578 0234 C032 cpi r28,lo8(32)
579 0236 40F3 brlo .L73
217:level4.c **** }
218:level4.c **** weigan34_odd_data = parity_bit;
219:level4.c **** wdt_reset( );
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 15
580 .stabn 68,0,219,.LM74-Send_Weigan34
581 .LM74:
582 /* #APP */
583 0238 A895 wdr
220:level4.c **** if ( weigan34_even_data ) //Send E bit;
584 .stabn 68,0,220,.LM75-Send_Weigan34
585 .LM75:
586 /* #NOAPP */
587 023a 6623 tst r22
588 023c 31F1 breq .L74
221:level4.c **** Send_Weigan1();
589 .stabn 68,0,221,.LM76-Send_Weigan34
590 .LM76:
591 023e F8D0 rcall Send_Weigan1
592 .L75:
222:level4.c **** else
223:level4.c **** Send_Weigan0();
224:level4.c **** for ( i = 0 ; i < 32 ; i++ ) //Send CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC;
593 .stabn 68,0,224,.LM77-Send_Weigan34
594 .LM77:
595 0240 C0E0 ldi r28,lo8(0)
596 0242 27E0 ldi r18,lo8(7)
597 0244 E22E mov r14,r18
598 0246 F12C mov r15,__zero_reg__
599 .L82:
225:level4.c **** {
226:level4.c **** bit_cnt = i % 8 ;
600 .stabn 68,0,226,.LM78-Send_Weigan34
601 .LM78:
602 0248 2C2F mov r18,r28
603 024a 2770 andi r18,lo8(7)
227:level4.c **** if ( ( data[ i / 8 ] >> ( 7 - bit_cnt ) ) & 0x01 ) //MSBit is send first;
604 .stabn 68,0,227,.LM79-Send_Weigan34
605 .LM79:
606 024c 8C2F mov r24,r28
607 024e 8695 lsr r24
608 0250 8695 lsr r24
609 0252 8695 lsr r24
610 0254 F801 movw r30,r16
611 0256 E80F add r30,r24
612 0258 F11D adc r31,__zero_reg__
613 025a 8081 ld r24,Z
614 025c 9927 clr r25
615 025e A701 movw r20,r14
616 0260 421B sub r20,r18
617 0262 5109 sbc r21,__zero_reg__
618 0264 02C0 rjmp 2f
619 0266 9595 1: asr r25
620 0268 8795 ror r24
621 026a 4A95 2: dec r20
622 026c E2F7 brpl 1b
623 026e 80FF sbrs r24,0
624 0270 0AC0 rjmp .L80
228:level4.c **** Send_Weigan1();
625 .stabn 68,0,228,.LM80-Send_Weigan34
626 .LM80:
627 0272 DED0 rcall Send_Weigan1
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQvbaaa.s page 16
628 .stabn 68,0,224,.LM81-Send_Weigan34
629 .LM81:
630 .L78:
631 0274 CF5F subi r28,lo8(-(1))
632 0276 C032 cpi r28,lo8(32)
633 0278 38F3 brlo .L82
229:level4.c **** else
230:level4.c **** Send_Weigan0();
231:level4.c **** }
232:level4.c **** if ( weigan34_odd_data ) //Send O bit;
634 .stabn 68,0,232,.LM82-Send_Weigan34
635 .LM82:
636 027a DD20 tst r13
637 027c 11F0 breq .L83
233:level4.c **** Send_Weigan1();
638 .stabn 68,0,233,.LM83-Send_Weigan34
639 .LM83:
640 027e D8D0 rcall Send_Weigan1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -