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