⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 这是一个用单片机来演奏音乐的程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -