📄 main.lst
字号:
463 .LBE2:
465 .Ltext2:
467 .LM5:
468 000e 2150 subi r18,lo8(-(-1))
469 0010 3040 sbci r19,hi8(-(-1))
470 0012 C9F7 brne .L6
471 .L8:
472 0014 0895 ret
473 /* epilogue: frame size=0 */
474 /* epilogue: noreturn */
475 /* epilogue end (size=0) */
476 /* function DelayMs size 15 (15) */
483 .global PwmInit
485 PwmInit:
53:main.c **** _delay_loop_2(250*4);
54:main.c **** }
55:main.c ****
56:main.c **** void PwmInit(void)
57:main.c **** {
487 .LM6:
488 /* prologue: frame size=0 */
489 /* prologue end (size=0) */
58:main.c **** PORTB&=~_BV(PB2);
491 .LM7:
492 0016 C298 cbi 56-0x20,2
59:main.c **** DDRB|=0X04; //输出引脚允许
494 .LM8:
495 0018 BA9A sbi 55-0x20,2
60:main.c ****
61:main.c **** //PWM相关定时器中断禁止
62:main.c **** TIMSK=0;//_BV(TICIE1)|_BV(OCIE1A)|_BV(OCIE1B)|_BV(TOIE1);
497 .LM9:
498 001a 19BE out 89-0x20,__zero_reg__
63:main.c ****
64:main.c **** // 可调相位、可调频率 PWM模式
65:main.c **** // OCR1A为上限值,OC1B(PB2)输出PWM
66:main.c **** // 向上计数过程中比较匹配清零,向下计数过程中比较匹配时置位
67:main.c **** // 时钟源:4MHz/1 PWM频率:4MHz/( 1 * X ) = 可调
68:main.c **** TCCR1A=_BV(COM1B1)|_BV(WGM10);
500 .LM10:
501 001c 81E2 ldi r24,lo8(33)
502 001e 8FBD out 79-0x20,r24
69:main.c **** TCCR1B=_BV(WGM13)|_BV(CS10);
504 .LM11:
505 0020 81E1 ldi r24,lo8(17)
506 0022 8EBD out 78-0x20,r24
70:main.c ****
71:main.c **** OCR1A=0XFFFF; //上限值设置
508 .LM12:
509 0024 8FEF ldi r24,lo8(-1)
510 0026 9FEF ldi r25,hi8(-1)
511 0028 9BBD out (74)+1-0x20,r25
512 002a 8ABD out 74-0x20,r24
72:main.c **** OCR1B=0X0000; //输出初始化为低电平
514 .LM13:
515 002c 19BC out (72)+1-0x20,__zero_reg__
516 002e 18BC out 72-0x20,__zero_reg__
73:main.c ****
74:main.c **** TCNT1=0;
518 .LM14:
519 0030 1DBC out (76)+1-0x20,__zero_reg__
520 0032 1CBC out 76-0x20,__zero_reg__
521 /* epilogue: frame size=0 */
522 0034 0895 ret
523 /* epilogue end (size=1) */
524 /* function PwmInit size 16 (15) */
528 .global SetPWM
530 SetPWM:
75:main.c **** }
76:main.c ****
77:main.c **** void SetPWM(uint val)
78:main.c **** {
532 .LM15:
533 /* prologue: frame size=0 */
534 /* prologue end (size=0) */
79:main.c **** OCR1A=val;
536 .LM16:
537 0036 9BBD out (74)+1-0x20,r25
538 0038 8ABD out 74-0x20,r24
80:main.c **** OCR1B=val/2;
540 .LM17:
541 003a 9695 lsr r25
542 003c 8795 ror r24
543 003e 99BD out (72)+1-0x20,r25
544 0040 88BD out 72-0x20,r24
545 /* epilogue: frame size=0 */
546 0042 0895 ret
547 /* epilogue end (size=1) */
548 /* function SetPWM size 7 (6) */
551 .global Play
553 Play:
81:main.c **** }
82:main.c ****
83:main.c **** void Play(void)
84:main.c **** {
555 .LM18:
556 /* prologue: frame size=0 */
557 0044 0F93 push r16
558 0046 1F93 push r17
559 0048 CF93 push r28
560 004a DF93 push r29
561 /* prologue end (size=4) */
562 004c C0E0 ldi r28,lo8(0)
563 004e D0E0 ldi r29,hi8(0)
85:main.c **** int i=0;
565 .LM19:
566 0050 8E01 movw r16,r28
567 .L12:
568 .LBB4:
86:main.c **** uchar msc[2];
87:main.c **** while(1)
88:main.c **** {
89:main.c **** msc[0]=pgm_read_byte(g_aMusic2+i++);
570 .LM20:
571 0052 F801 movw r30,r16
572 0054 E050 subi r30,lo8(-(g_aMusic2))
573 0056 F040 sbci r31,hi8(-(g_aMusic2))
574 0058 0F5F subi r16,lo8(-(1))
575 005a 1F4F sbci r17,hi8(-(1))
576 /* #APP */
577 005c 8491 lpm r24, Z
578
579 /* #NOAPP */
580 .LBE4:
581 005e C82F mov r28,r24
582 .LBB5:
90:main.c **** msc[1]=pgm_read_byte(g_aMusic2+i++);
584 .LM21:
585 0060 F801 movw r30,r16
586 0062 E050 subi r30,lo8(-(g_aMusic2))
587 0064 F040 sbci r31,hi8(-(g_aMusic2))
588 0066 0F5F subi r16,lo8(-(1))
589 0068 1F4F sbci r17,hi8(-(1))
590 /* #APP */
591 006a 8491 lpm r24, Z
592
593 /* #NOAPP */
594 .LBE5:
595 006c D82F mov r29,r24
91:main.c **** if(msc[0]==0 && msc[1]==0)
597 .LM22:
598 006e EC2F mov r30,r28
599 0070 CC23 tst r28
600 0072 11F4 brne .L14
601 0074 8823 tst r24
602 0076 71F0 breq .L13
603 .L14:
92:main.c **** break;
93:main.c **** SetPWM(g_aMusicTab[msc[0]]);
605 .LM23:
606 0078 FF27 clr r31
607 007a EE0F add r30,r30
608 007c FF1F adc r31,r31
609 007e E050 subi r30,lo8(-(g_aMusicTab))
610 0080 F040 sbci r31,hi8(-(g_aMusicTab))
611 0082 8081 ld r24,Z
612 0084 9181 ldd r25,Z+1
613 0086 D7DF rcall SetPWM
94:main.c **** DelayMs(187*msc[1]);
615 .LM24:
616 0088 8BEB ldi r24,lo8(-69)
617 008a D89F mul r29,r24
618 008c C001 movw r24,r0
619 008e 1124 clr r1
620 0090 B7DF rcall DelayMs
621 0092 DFCF rjmp .L12
622 .L13:
95:main.c **** }
96:main.c **** SetPWM(0);
624 .LM25:
625 0094 80E0 ldi r24,lo8(0)
626 0096 90E0 ldi r25,hi8(0)
627 0098 CEDF rcall SetPWM
628 /* epilogue: frame size=0 */
629 009a DF91 pop r29
630 009c CF91 pop r28
631 009e 1F91 pop r17
632 00a0 0F91 pop r16
633 00a2 0895 ret
634 /* epilogue end (size=5) */
635 /* function Play size 54 (45) */
648 .global main
650 main:
97:main.c **** }
98:main.c ****
99:main.c **** int main(void)
100:main.c **** {
652 .LM26:
653 /* prologue: frame size=0 */
654 00a4 C0E0 ldi r28,lo8(__stack - 0)
655 00a6 D0E0 ldi r29,hi8(__stack - 0)
656 00a8 DEBF out __SP_H__,r29
657 00aa CDBF out __SP_L__,r28
658 /* prologue end (size=4) */
101:main.c **** PORTD|=_BV(PD2);
660 .LM27:
661 00ac 929A sbi 50-0x20,2
102:main.c **** PwmInit();
663 .LM28:
664 00ae B3DF rcall PwmInit
665 .L23:
103:main.c ****
104:main.c **** while(1)
105:main.c **** {
106:main.c **** if((PIND&_BV(PD2))==0)
667 .LM29:
668 00b0 8299 sbic 48-0x20,2
669 00b2 02C0 rjmp .L18
107:main.c **** Play();
671 .LM30:
672 00b4 C7DF rcall Play
673 00b6 FCCF rjmp .L23
674 .L18:
108:main.c **** else
109:main.c **** DelayMs(10);
676 .LM31:
677 00b8 8AE0 ldi r24,lo8(10)
678 00ba 90E0 ldi r25,hi8(10)
679 00bc A1DF rcall DelayMs
680 00be F8CF rjmp .L23
681 /* epilogue: frame size=0 */
682 /* epilogue: noreturn */
683 /* epilogue end (size=0) */
684 /* function main size 14 (10) */
689 .text
691 Letext:
692 /* File "main.c": code 106 = 0x006a ( 91), prologues 8, epilogues 7 */
DEFINED SYMBOLS
*ABS*:00000000 main.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:71 .progmem.data:00000000 g_aMusic2
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:205 .progmem.data:00000082 g_aMusic1
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:394 .data:00000000 g_aMusicTab
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:437 .text:00000000 DelayMs
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:485 .text:00000016 PwmInit
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:530 .text:00000036 SetPWM
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:553 .text:00000044 Play
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:650 .text:000000a4 main
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceuaaaa.s:691 .text:000000c0 Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -