📄 level2.lst
字号:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 12
178:level2.c **** raw_data[ i ] = 0 ;
451 .stabn 68,0,178,.LM59-ClearCaptureBuffers
452 .LM59:
453 0164 1192 st Z+,__zero_reg__
454 .stabn 68,0,177,.LM60-ClearCaptureBuffers
455 .LM60:
456 0166 8F5F subi r24,lo8(-(1))
457 0168 883C cpi r24,lo8(-56)
458 016a E0F3 brlo .L44
179:level2.c **** bufferClean = 1;
459 .stabn 68,0,179,.LM61-ClearCaptureBuffers
460 .LM61:
461 016c 81E0 ldi r24,lo8(1)
462 016e 8093 0000 sts bufferClean,r24
180:level2.c **** }
463 .stabn 68,0,180,.LM62-ClearCaptureBuffers
464 .LM62:
465 .LBE4:
466 /* epilogue: frame size=0 */
467 0172 0895 ret
468 /* epilogue end (size=1) */
469 /* function ClearCaptureBuffers size 11 (10) */
470 .size ClearCaptureBuffers, .-ClearCaptureBuffers
471 .stabs "i:r(4,2)",64,0,176,24
472 .stabn 192,0,0,.LBB4-ClearCaptureBuffers
473 .stabn 224,0,0,.LBE4-ClearCaptureBuffers
474 .Lscope6:
475 .stabs "",36,0,0,.Lscope6-ClearCaptureBuffers
476 .stabs "WaitSPI:F(0,20)",36,0,186,WaitSPI
477 .global WaitSPI
478 .type WaitSPI, @function
479 WaitSPI:
181:level2.c ****
182:level2.c ****
183:level2.c **** // ==================================================================
184:level2.c ****
185:level2.c **** void WaitSPI( void )
186:level2.c **** {
480 .stabn 68,0,186,.LM63-WaitSPI
481 .LM63:
482 /* prologue: frame size=0 */
483 /* prologue end (size=0) */
187:level2.c **** int register x = SPI_DELAY;
484 .stabn 68,0,187,.LM64-WaitSPI
485 .LM64:
486 .LBB5:
487 0174 25E0 ldi r18,lo8(5)
488 0176 30E0 ldi r19,hi8(5)
188:level2.c **** while( x-- > 0 )
489 .stabn 68,0,188,.LM65-WaitSPI
490 .LM65:
491 .L48:
492 0178 C901 movw r24,r18
493 017a 2150 subi r18,lo8(-(-1))
494 017c 3040 sbci r19,hi8(-(-1))
495 017e 1816 cp __zero_reg__,r24
496 0180 1906 cpc __zero_reg__,r25
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 13
497 0182 D4F3 brlt .L48
189:level2.c **** { }
190:level2.c **** }
498 .stabn 68,0,190,.LM66-WaitSPI
499 .LM66:
500 .LBE5:
501 /* epilogue: frame size=0 */
502 0184 0895 ret
503 /* epilogue end (size=1) */
504 /* function WaitSPI size 9 (8) */
505 .size WaitSPI, .-WaitSPI
506 .stabs "x:r(0,1)",64,0,187,18
507 .stabn 192,0,0,.LBB5-WaitSPI
508 .stabn 224,0,0,.LBE5-WaitSPI
509 .Lscope7:
510 .stabs "",36,0,0,.Lscope7-WaitSPI
511 .stabs "WriteSPI:F(0,20)",36,0,195,WriteSPI
512 .stabs "low:P(4,4)",64,0,194,24
513 .stabs "hi:P(4,4)",64,0,194,14
514 .global WriteSPI
515 .type WriteSPI, @function
516 WriteSPI:
191:level2.c ****
192:level2.c **** // ==================================================================
193:level2.c ****
194:level2.c **** void WriteSPI( uint16_t low , uint16_t hi )
195:level2.c **** {
517 .stabn 68,0,195,.LM67-WriteSPI
518 .LM67:
519 /* prologue: frame size=0 */
520 0186 EF92 push r14
521 0188 FF92 push r15
522 018a 1F93 push r17
523 018c CF93 push r28
524 018e DF93 push r29
525 /* prologue end (size=5) */
526 0190 7B01 movw r14,r22
196:level2.c **** int16_t data = low;
527 .stabn 68,0,196,.LM68-WriteSPI
528 .LM68:
529 .LBB6:
530 0192 EC01 movw r28,r24
197:level2.c **** uint8_t bitcnt = 32;
198:level2.c ****
199:level2.c **** //SPI start event
200:level2.c **** cbi( PORTC , MOD_PIN );
531 .stabn 68,0,200,.LM69-WriteSPI
532 .LM69:
533 0194 A998 cbi 53-0x20,1
201:level2.c **** WaitSPI( );
534 .stabn 68,0,201,.LM70-WriteSPI
535 .LM70:
536 0196 EEDF rcall WaitSPI
202:level2.c **** sbi( PORTC , DCLK_PIN );
537 .stabn 68,0,202,.LM71-WriteSPI
538 .LM71:
539 0198 A89A sbi 53-0x20,0
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 14
203:level2.c **** WaitSPI( );
540 .stabn 68,0,203,.LM72-WriteSPI
541 .LM72:
542 019a ECDF rcall WaitSPI
204:level2.c **** sbi( PORTC , MOD_PIN );
543 .stabn 68,0,204,.LM73-WriteSPI
544 .LM73:
545 019c A99A sbi 53-0x20,1
205:level2.c **** WaitSPI( );
546 .stabn 68,0,205,.LM74-WriteSPI
547 .LM74:
548 019e EADF rcall WaitSPI
206:level2.c ****
207:level2.c **** while ( bitcnt-- > 0 )
549 .stabn 68,0,207,.LM75-WriteSPI
550 .LM75:
551 01a0 1FE1 ldi r17,lo8(31)
552 .L58:
208:level2.c **** {
209:level2.c **** cbi( PORTC , DCLK_PIN );
553 .stabn 68,0,209,.LM76-WriteSPI
554 .LM76:
555 01a2 A898 cbi 53-0x20,0
210:level2.c **** WaitSPI( );
556 .stabn 68,0,210,.LM77-WriteSPI
557 .LM77:
558 01a4 E7DF rcall WaitSPI
211:level2.c **** if ( data & 1 )
559 .stabn 68,0,211,.LM78-WriteSPI
560 .LM78:
561 01a6 C0FF sbrs r28,0
562 01a8 0FC0 rjmp .L55
212:level2.c **** sbi( PORTC , MOD_PIN );
563 .stabn 68,0,212,.LM79-WriteSPI
564 .LM79:
565 01aa A99A sbi 53-0x20,1
566 .L56:
213:level2.c **** else
214:level2.c **** cbi( PORTC , MOD_PIN );
215:level2.c **** WaitSPI( );
567 .stabn 68,0,215,.LM80-WriteSPI
568 .LM80:
569 01ac E3DF rcall WaitSPI
216:level2.c **** data >>= 1;
570 .stabn 68,0,216,.LM81-WriteSPI
571 .LM81:
572 01ae D595 asr r29
573 01b0 C795 ror r28
217:level2.c **** if ( bitcnt == 16 )
574 .stabn 68,0,217,.LM82-WriteSPI
575 .LM82:
576 01b2 1031 cpi r17,lo8(16)
577 01b4 39F0 breq .L61
578 .L57:
218:level2.c **** data = hi;
219:level2.c **** sbi( PORTC , DCLK_PIN );
579 .stabn 68,0,219,.LM83-WriteSPI
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 15
580 .LM83:
581 01b6 A89A sbi 53-0x20,0
220:level2.c **** WaitSPI( );
582 .stabn 68,0,220,.LM84-WriteSPI
583 .LM84:
584 01b8 DDDF rcall WaitSPI
585 01ba 812F mov r24,r17
586 01bc 1150 subi r17,lo8(-(-1))
587 01be 8823 tst r24
588 01c0 81F7 brne .L58
589 01c2 04C0 rjmp .L62
590 .stabn 68,0,218,.LM85-WriteSPI
591 .LM85:
592 .L61:
593 01c4 E701 movw r28,r14
594 01c6 F7CF rjmp .L57
595 .L55:
596 .stabn 68,0,214,.LM86-WriteSPI
597 .LM86:
598 01c8 A998 cbi 53-0x20,1
599 01ca F0CF rjmp .L56
600 .L62:
221:level2.c **** }
222:level2.c **** cbi( PORTC , DCLK_PIN ); //for the first time, DCLK is '1', for the next, enable D
601 .stabn 68,0,222,.LM87-WriteSPI
602 .LM87:
603 01cc A898 cbi 53-0x20,0
223:level2.c **** WaitSPI( );
604 .stabn 68,0,223,.LM88-WriteSPI
605 .LM88:
606 01ce D2DF rcall WaitSPI
224:level2.c **** cbi( PORTC , MOD_PIN );
607 .stabn 68,0,224,.LM89-WriteSPI
608 .LM89:
609 01d0 A998 cbi 53-0x20,1
225:level2.c **** }
610 .stabn 68,0,225,.LM90-WriteSPI
611 .LM90:
612 .LBE6:
613 /* epilogue: frame size=0 */
614 01d2 DF91 pop r29
615 01d4 CF91 pop r28
616 01d6 1F91 pop r17
617 01d8 FF90 pop r15
618 01da EF90 pop r14
619 01dc 0895 ret
620 /* epilogue end (size=6) */
621 /* function WriteSPI size 44 (33) */
622 .size WriteSPI, .-WriteSPI
623 .stabs "data:r(4,3)",64,0,196,28
624 .stabs "bitcnt:r(4,2)",64,0,197,17
625 .stabn 192,0,0,.LBB6-WriteSPI
626 .stabn 224,0,0,.LBE6-WriteSPI
627 .Lscope8:
628 .stabs "",36,0,0,.Lscope8-WriteSPI
629 .stabs "CRC:F(4,4)",36,0,230,CRC
630 .stabs "data:P(1,1)=*(4,2)",64,0,229,28
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 16
631 .stabs "len:P(4,2)",64,0,229,24
632 .global CRC
633 .type CRC, @function
634 CRC:
226:level2.c ****
227:level2.c **** // ==================================================================
228:level2.c ****
229:level2.c **** uint16_t CRC( uint8_t * data , uint8_t len )
230:level2.c **** {
635 .stabn 68,0,230,.LM91-CRC
636 .LM91:
637 /* prologue: frame size=0 */
638 01de CF93 push r28
639 01e0 DF93 push r29
640 /* prologue end (size=2) */
641 01e2 EC01 movw r28,r24
642 01e4 862F mov r24,r22
231:level2.c **** uint16_t crc = 0xFFFF; //CRC preset
643 .stabn 68,0,231,.LM92-CRC
644 .LM92:
645 .LBB7:
646 01e6 2FEF ldi r18,lo8(-1)
647 01e8 3FEF ldi r19,hi8(-1)
232:level2.c **** int8_t i , j;
233:level2.c **** const uint16_t poly = 0x8408; //CRC polynom
234:level2.c ****
235:level2.c **** for ( i = 0 ; i < len ; i++ )
648 .stabn 68,0,235,.LM93-CRC
649 .LM93:
650 01ea 60E0 ldi r22,lo8(0)
651 01ec 40E0 ldi r20,lo8(0)
652 01ee 50E0 ldi r21,hi8(0)
653 01f0 A82F mov r26,r24
654 01f2 BB27 clr r27
655 01f4 4A17 cp r20,r26
656 01f6 5B07 cpc r21,r27
657 01f8 04F5 brge .L77
658 01fa FA01 movw r30,r20
659 01fc 48E0 ldi r20,lo8(-31736)
660 01fe 54E8 ldi r21,hi8(-31736)
661 .L75:
236:level2.c **** {
237:level2.c **** crc ^= data[ i ];
662 .stabn 68,0,237,.LM94-CRC
663 .LM94:
664 0200 EC0F add r30,r28
665 0202 FD1F adc r31,r29
666 0204 8081 ld r24,Z
667 0206 9927 clr r25
668 0208 2827 eor r18,r24
669 020a 3927 eor r19,r25
238:level2.c **** for ( j = 0 ; j < 8 ; j++ )
670 .stabn 68,0,238,.LM95-CRC
671 .LM95:
672 020c 87E0 ldi r24,lo8(7)
673 .L74:
239:level2.c **** {
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccxcaaa.s page 17
240:level2.c **** if ( crc & 1 )
674 .stabn 68,0,240,.LM96-CRC
675 .LM96:
676 020e 20FF sbrs r18,0
677 0210 11C0 rjmp .L72
241:level2.c **** crc = ( crc >> 1 ) ^ poly;
678 .stabn 68,0,241,.LM97-CRC
679 .LM97:
680 0212 3695 lsr r19
681 0214 2795 ror r18
682 0216 2427 eor r18,r20
683 0218 3527 eor r19,r21
684 .stabn 68,0,238,.LM98-CRC
685 .LM98:
686 .L70:
687 021a 8150 subi r24,lo8(-(-1))
688 021c 87FF sbrs r24,7
689 021e F7CF rjmp .L74
690 .stabn 68,0,235,.LM99-CRC
691 .LM99:
692 0220 6F5F subi r22,lo8(-(1))
693 0222 862F mov r24,r22
694 0224 9927 clr r25
695 0226 87FD sbrc r24,7
696 0228 9095 com r25
697 022a FC01 movw r30,r24
698 022c 8A17 cp r24,r26
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -