📄 main.lst
字号:
442:main.c **** 443:main.c **** cPattern[0] = 0xFF; 444:main.c **** 445:main.c **** } 446:main.c **** 447:main.c **** } else { 448:main.c **** 449:main.c **** if ( (pixelNum > (0x40-PAC_CLOSED)) & (pixelNum < (0x40+PAC_CLOSED)) ) { 610 .LM51: 611 01fe 242F mov r18,r20 612 0200 352F mov r19,r21 613 0202 8091 0000 lds r24,pixelNum 614 0206 8133 cpi r24,lo8(49) 615 0208 10F0 brlo .L37 616 020a 262F mov r18,r22 617 020c 372F mov r19,r23 618 .L37: 619 020e 8091 0000 lds r24,pixelNum 620 0212 8035 cpi r24,lo8(80) 621 0214 78F5 brsh .L48 622 0216 2CC0 rjmp .L76 623 .L30: 450:main.c **** 451:main.c **** cPattern[0] = 0xFF; 452:main.c **** 453:main.c **** } 454:main.c **** 455:main.c **** } 456:main.c **** 457:main.c **** } else if (cur_code == 0xE2) { 625 .LM52: 626 0218 8091 0000 lds r24,cur_code 627 021c 823E cpi r24,lo8(-30) 628 021e 69F5 brne .L40 458:main.c **** 459:main.c **** // Right pacman, as seen from front 460:main.c **** 461:main.c **** if ( (line_shift & 0x01) == 0 ) { 630 .LM53: 631 0220 8091 0000 lds r24,line_shift 632 0224 9927 clr r25 633 0226 61E0 ldi r22,lo8(1) 634 0228 70E0 ldi r23,hi8(1) 635 022a 8627 eor r24,r22 636 022c 9727 eor r25,r23 637 022e 482F mov r20,r24 638 0230 592F mov r21,r25 639 0232 4623 and r20,r22 640 0234 5723 and r21,r23 641 0236 80FF sbrs r24,0 642 0238 0FC0 rjmp .L41 462:main.c **** 463:main.c **** if ( (pixelNum > (0xC0-PAC_OPEN)) & (pixelNum < (0xC0+PAC_OPEN)) ) { 644 .LM54: 645 023a 20E0 ldi r18,lo8(0) 646 023c 30E0 ldi r19,hi8(0) 647 023e 8091 0000 lds r24,pixelNum 648 0242 8139 cpi r24,lo8(-111) 649 0244 10F0 brlo .L43 650 0246 262F mov r18,r22 651 0248 372F mov r19,r23 652 .L43: 653 024a 40E0 ldi r20,lo8(0) 654 024c 50E0 ldi r21,hi8(0) 655 024e 8091 0000 lds r24,pixelNum 656 0252 803F cpi r24,lo8(-16) 657 0254 78F4 brsh .L48 658 0256 0CC0 rjmp .L76 659 .L41: 464:main.c **** 465:main.c **** cPattern[0] = 0xFF; 466:main.c **** 467:main.c **** } 468:main.c **** 469:main.c **** } else { 470:main.c **** 471:main.c **** if ( (pixelNum > (0xC0-PAC_CLOSED)) & (pixelNum < (0xC0+PAC_CLOSED)) ) { 661 .LM55: 662 0258 242F mov r18,r20 663 025a 352F mov r19,r21 664 025c 8091 0000 lds r24,pixelNum 665 0260 813B cpi r24,lo8(-79) 666 0262 10F0 brlo .L47 667 0264 262F mov r18,r22 668 0266 372F mov r19,r23 669 .L47: 670 0268 8091 0000 lds r24,pixelNum 671 026c 803D cpi r24,lo8(-48) 672 026e 10F4 brsh .L48 673 .L76: 674 0270 462F mov r20,r22 675 0272 572F mov r21,r23 676 .L48: 677 0274 2423 and r18,r20 678 0276 3523 and r19,r21 679 0278 30C0 rjmp .L74 680 .L40: 472:main.c **** 473:main.c **** cPattern[0] = 0xFF; 474:main.c **** 475:main.c **** } 476:main.c **** 477:main.c **** } 478:main.c **** 479:main.c **** } else if (cur_code == 0xE3) { 682 .LM56: 683 027a 8091 0000 lds r24,cur_code 684 027e 833E cpi r24,lo8(-29) 685 0280 79F5 brne .L50 480:main.c **** 481:main.c **** // Back pacman, as seen from front. We have to be a little tricky 482:main.c **** // here because the two sides of the mouth will be displayed on 483:main.c **** // different rotations! So line_shift will almost certainly be 484:main.c **** // opposite for each unless we are spinning fast. 485:main.c **** 486:main.c **** if ( (line_shift & 0x01) == 0 ) { 687 .LM57: 688 0282 8091 0000 lds r24,line_shift 689 0286 9927 clr r25 690 0288 61E0 ldi r22,lo8(1) 691 028a 70E0 ldi r23,hi8(1) 692 028c 8627 eor r24,r22 693 028e 9727 eor r25,r23 694 0290 482F mov r20,r24 695 0292 592F mov r21,r25 696 0294 4623 and r20,r22 697 0296 5723 and r21,r23 698 0298 80FF sbrs r24,0 699 029a 0FC0 rjmp .L51 487:main.c **** 488:main.c **** if ( (pixelNum < (PAC_OPEN)) | (pixelNum > (PAC_CLOSED_NEG)) ) { 701 .LM58: 702 029c 20E0 ldi r18,lo8(0) 703 029e 30E0 ldi r19,hi8(0) 704 02a0 8091 0000 lds r24,pixelNum 705 02a4 8033 cpi r24,lo8(48) 706 02a6 10F4 brsh .L53 707 02a8 262F mov r18,r22 708 02aa 372F mov r19,r23 709 .L53: 710 02ac 40E0 ldi r20,lo8(0) 711 02ae 50E0 ldi r21,hi8(0) 712 02b0 8091 0000 lds r24,pixelNum 713 02b4 813F cpi r24,lo8(-15) 714 02b6 78F0 brlo .L58 715 02b8 0CC0 rjmp .L75 716 .L51: 489:main.c **** 490:main.c **** cPattern[0] = 0xFF; 491:main.c **** 492:main.c **** } 493:main.c **** 494:main.c **** } else { 495:main.c **** 496:main.c **** if ( (pixelNum < (PAC_CLOSED)) | (pixelNum > (PAC_OPEN_NEG)) ) { 718 .LM59: 719 02ba 242F mov r18,r20 720 02bc 352F mov r19,r21 721 02be 8091 0000 lds r24,pixelNum 722 02c2 8031 cpi r24,lo8(16) 723 02c4 10F4 brsh .L57 724 02c6 262F mov r18,r22 725 02c8 372F mov r19,r23 726 .L57: 727 02ca 8091 0000 lds r24,pixelNum 728 02ce 813D cpi r24,lo8(-47) 729 02d0 10F0 brlo .L58 730 .L75: 731 02d2 462F mov r20,r22 732 02d4 572F mov r21,r23 733 .L58: 734 02d6 242B or r18,r20 735 02d8 352B or r19,r21 736 .L74: 737 02da 232B or r18,r19 738 02dc 89F1 breq .L29 739 02de 2BC0 rjmp .L73 740 .L50: 497:main.c **** 498:main.c **** cPattern[0] = 0xFF; 499:main.c **** 500:main.c **** } 501:main.c **** 502:main.c **** } 503:main.c **** 504:main.c **** } else if (cur_code == 0xE4) { 742 .LM60: 743 02e0 8091 0000 lds r24,cur_code 744 02e4 843E cpi r24,lo8(-28) 745 02e6 49F5 brne .L60 505:main.c **** 506:main.c **** // pacman dying 507:main.c **** 508:main.c **** eeprom_addr.bytes.high_byte = (line_shift << 3) & 0xF0; 747 .LM61: 748 02e8 8091 0000 lds r24,line_shift 749 02ec 880F lsl r24 750 02ee 880F lsl r24 751 02f0 880F lsl r24 752 02f2 807F andi r24,lo8(-16) 753 02f4 8093 0000 sts eeprom_addr+1,r24 509:main.c **** 510:main.c **** if ( (pixelNum < eeprom_addr.bytes.high_byte) | (pixelNum > (0xFF-eeprom_addr.bytes.high_byt 755 .LM62: 756 02f8 60E0 ldi r22,lo8(0) 757 02fa 70E0 ldi r23,hi8(0) 758 02fc 9091 0000 lds r25,pixelNum 759 0300 8091 0000 lds r24,eeprom_addr+1 760 0304 9817 cp r25,r24 761 0306 10F4 brsh .L62 762 0308 61E0 ldi r22,lo8(1) 763 030a 70E0 ldi r23,hi8(1) 764 .L62: 765 030c E0E0 ldi r30,lo8(0) 766 030e F0E0 ldi r31,hi8(0) 767 0310 8091 0000 lds r24,pixelNum 768 0314 282F mov r18,r24 769 0316 3327 clr r19 770 0318 4091 0000 lds r20,eeprom_addr+1 771 031c 8FEF ldi r24,lo8(255) 772 031e 90E0 ldi r25,hi8(255) 773 0320 841B sub r24,r20 774 0322 9109 sbc r25,__zero_reg__ 775 0324 8217 cp r24,r18 776 0326 9307 cpc r25,r19 777 0328 14F4 brge .L63 778 032a E1E0 ldi r30,lo8(1) 779 032c F0E0 ldi r31,hi8(1) 780 .L63: 781 032e 6E2B or r22,r30 782 0330 7F2B or r23,r31 783 0332 672B or r22,r23 784 0334 29F0 breq .L29 785 .L73: 511:main.c **** 512:main.c **** cPattern[0] = 0xFF; 787 .LM63: 788 0336 8FEF ldi r24,lo8(-1) 789 0338 01C0 rjmp .L65 790 .L60: 513:main.c **** 514:main.c **** } 515:main.c **** 516:main.c **** } else { 517:main.c **** 518:main.c **** cPattern[0] = 0x30; 792 .LM64: 793 033a 80E3 ldi r24,lo8(48) 794 .L65: 795 033c 8093 0000 sts cPattern,r24 796 .L29: 519:main.c **** 520:main.c **** } 521:main.c **** 522:main.c **** set_all(cPattern[0]); 798 .LM65: 799 0340 8091 0000 lds r24,cPattern 800 0344 84DE rcall set_all 801 .L11: 802 /* epilogue: frame size=0 */ 803 0346 FF91 pop r31 804 0348 EF91 pop r30 805 034a BF91 pop r27 806 034c AF91 pop r26 807 034e 9F91 pop r25 808 0350 8F91 pop r24 809 0352 7F91 pop r23 810 0354 6F91 pop r22 811 0356 5F91 pop r21 812 0358 4F91 pop r20 813 035a 3F91 pop r19 814 035c 2F91 pop r18 815 035e 0F90 pop __tmp_reg__ 816 0360 0FBE out __SREG__,__tmp_reg__ 817 0362 0F90 pop __tmp_reg__ 818 0364 1F90 pop __zero_reg__ 819 0366 1895 reti 820 /* epilogue end (size=17) */ 821 /* function __vector_4 size 339 (305) */ 823 .Lscope3: 826 .global __vector_1 828 __vector_1: 523:main.c **** 524:main.c **** // cPattern[3] = cPattern[2] = cPattern[1] = cPattern[0]; 525:main.c **** // clock_scroll(0); 526:main.c **** 527:main.c **** } 528:main.c **** 529:main.c **** } 530:main.c **** 531:main.c **** } 532:main.c **** 533:main.c **** // Interrupt 0 executes when the button is pressed. 534:main.c **** 535:main.c **** // QUESTION: unlike the pixel output interrupt, this one 536:main.c **** // doesn't sei(). Why?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -