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

📄 main.lss

📁 这是一个用单片机来演奏音乐的程序
💻 LSS
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000256  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000004a  00800060  00000256  000002ea  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  008000aa  000002a0  00000334  2**0
                  ALLOC
  3 .noinit       00000000  008000aa  008000aa  00000334  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000334  2**0
                  CONTENTS
  5 .stab         00000558  00000000  00000000  00000334  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      000007e1  00000000  00000000  0000088c  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	af c0       	rjmp	.+350    	; 0x160
   2:	c8 c0       	rjmp	.+400    	; 0x194
   4:	c7 c0       	rjmp	.+398    	; 0x194
   6:	c6 c0       	rjmp	.+396    	; 0x194
   8:	c5 c0       	rjmp	.+394    	; 0x194
   a:	c4 c0       	rjmp	.+392    	; 0x194
   c:	c3 c0       	rjmp	.+390    	; 0x194
   e:	c2 c0       	rjmp	.+388    	; 0x194
  10:	c1 c0       	rjmp	.+386    	; 0x194
  12:	c0 c0       	rjmp	.+384    	; 0x194
  14:	bf c0       	rjmp	.+382    	; 0x194
  16:	be c0       	rjmp	.+380    	; 0x194
  18:	bd c0       	rjmp	.+378    	; 0x194
  1a:	bc c0       	rjmp	.+376    	; 0x194
  1c:	bb c0       	rjmp	.+374    	; 0x194
  1e:	ba c0       	rjmp	.+372    	; 0x194
  20:	b9 c0       	rjmp	.+370    	; 0x194
  22:	b8 c0       	rjmp	.+368    	; 0x194
  24:	b7 c0       	rjmp	.+366    	; 0x194

00000026 <__ctors_end>:
  26:	14 02       	muls	r17, r20
  28:	00 01       	movw	r0, r0
  2a:	14 01       	movw	r2, r8
  2c:	16 04       	cpc	r1, r6
  2e:	14 04       	cpc	r1, r4
  30:	19 04       	cpc	r1, r9
  32:	18 04       	cpc	r1, r8
  34:	00 04       	cpc	r0, r0
  36:	14 02       	muls	r17, r20
  38:	00 01       	movw	r0, r0
  3a:	14 01       	movw	r2, r8
  3c:	16 04       	cpc	r1, r6
  3e:	14 04       	cpc	r1, r4
  40:	1b 04       	cpc	r1, r11
  42:	19 04       	cpc	r1, r9
  44:	00 04       	cpc	r0, r0
  46:	14 02       	muls	r17, r20
  48:	00 01       	movw	r0, r0
  4a:	14 01       	movw	r2, r8
  4c:	20 04       	cpc	r2, r0
  4e:	1d 04       	cpc	r1, r13
  50:	19 04       	cpc	r1, r9
  52:	18 04       	cpc	r1, r8
  54:	16 04       	cpc	r1, r6
  56:	1e 02       	muls	r17, r30
  58:	00 01       	movw	r0, r0
  5a:	1e 01       	movw	r2, r28
  5c:	1d 04       	cpc	r1, r13
  5e:	19 04       	cpc	r1, r9
  60:	1b 04       	cpc	r1, r11
  62:	19 04       	cpc	r1, r9
  64:	00 04       	cpc	r0, r0
  66:	14 02       	muls	r17, r20
  68:	00 01       	movw	r0, r0
  6a:	14 01       	movw	r2, r8
  6c:	16 04       	cpc	r1, r6
  6e:	14 04       	cpc	r1, r4
  70:	19 04       	cpc	r1, r9
  72:	18 04       	cpc	r1, r8
  74:	00 04       	cpc	r0, r0
  76:	14 02       	muls	r17, r20
  78:	00 01       	movw	r0, r0
  7a:	14 01       	movw	r2, r8
  7c:	16 04       	cpc	r1, r6
  7e:	14 04       	cpc	r1, r4
  80:	1b 04       	cpc	r1, r11
  82:	19 04       	cpc	r1, r9
  84:	00 04       	cpc	r0, r0
  86:	14 02       	muls	r17, r20
  88:	00 01       	movw	r0, r0
  8a:	14 01       	movw	r2, r8
  8c:	20 04       	cpc	r2, r0
  8e:	1d 04       	cpc	r1, r13
  90:	19 04       	cpc	r1, r9
  92:	18 04       	cpc	r1, r8
  94:	16 04       	cpc	r1, r6
  96:	1e 02       	muls	r17, r30
  98:	00 01       	movw	r0, r0
  9a:	1e 01       	movw	r2, r28
  9c:	1d 04       	cpc	r1, r13
  9e:	19 04       	cpc	r1, r9
  a0:	1b 04       	cpc	r1, r11
  a2:	19 04       	cpc	r1, r9
  a4:	00 04       	cpc	r0, r0
	...

000000a8 <g_aMusic1>:
  a8:	11 04 12 04 14 06 14 02 16 04 14 04 11 0c 0f 04     ................
  b8:	0d 06 11 02 0f 04 0d 04 0a 0c 0a 04 08 08 0d 04     ................
  c8:	0f 04 11 04 14 04 16 04 11 04 0f 0f 0f 04 00 04     ................
  d8:	11 04 12 04 14 06 14 02 16 04 14 04 11 0c 0f 04     ................
  e8:	0d 06 11 02 0f 04 0d 04 0a 0c 0a 04 08 08 0d 06     ................
  f8:	11 02 0f 06 0d 02 0d 04 0a 04 0d 0f 0d 08 11 04     ................
 108:	14 04 16 0c 19 0a 16 04 12 04 14 06 16 02 14 0c     ................
 118:	11 04 14 08 11 04 14 04 16 0c 19 04 19 04 16 04     ................
 128:	14 04 11 04 0f 0f 0f 08 11 04 12 04 14 06 14 02     ................
 138:	16 04 14 04 11 0c 0f 04 0d 06 11 02 0f 04 0d 04     ................
 148:	0a 0c 0a 04 08 08 0d 04 11 04 0f 06 0d 02 0a 04     ................
 158:	0c 04 0d 0f 0d 0f 00 00                             ........

00000160 <__init>:
 160:	11 24       	eor	r1, r1
 162:	1f be       	out	0x3f, r1	; 63
 164:	cf e5       	ldi	r28, 0x5F	; 95
 166:	d4 e0       	ldi	r29, 0x04	; 4
 168:	de bf       	out	0x3e, r29	; 62
 16a:	cd bf       	out	0x3d, r28	; 61

0000016c <__do_copy_data>:
 16c:	10 e0       	ldi	r17, 0x00	; 0
 16e:	a0 e6       	ldi	r26, 0x60	; 96
 170:	b0 e0       	ldi	r27, 0x00	; 0
 172:	e6 e5       	ldi	r30, 0x56	; 86
 174:	f2 e0       	ldi	r31, 0x02	; 2
 176:	02 c0       	rjmp	.+4      	; 0x17c

00000178 <.do_copy_data_loop>:
 178:	05 90       	lpm	r0, Z+
 17a:	0d 92       	st	X+, r0

0000017c <.do_copy_data_start>:
 17c:	aa 3a       	cpi	r26, 0xAA	; 170
 17e:	b1 07       	cpc	r27, r17
 180:	d9 f7       	brne	.-10     	; 0x178

00000182 <__do_clear_bss>:
 182:	10 e0       	ldi	r17, 0x00	; 0
 184:	aa ea       	ldi	r26, 0xAA	; 170
 186:	b0 e0       	ldi	r27, 0x00	; 0
 188:	01 c0       	rjmp	.+2      	; 0x18c

0000018a <.do_clear_bss_loop>:
 18a:	1d 92       	st	X+, r1

0000018c <.do_clear_bss_start>:
 18c:	aa 3a       	cpi	r26, 0xAA	; 170
 18e:	b1 07       	cpc	r27, r17
 190:	e1 f7       	brne	.-8      	; 0x18a
 192:	53 c0       	rjmp	.+166    	; 0x23a

00000194 <__bad_interrupt>:
 194:	35 cf       	rjmp	.-406    	; 0x0

00000196 <DelayMs>:
									00,00};
void DelayMs(uint t)
{
	uint i;
	for(i=0;i<t;i++)
 196:	00 97       	sbiw	r24, 0x00	; 0
 198:	41 f0       	breq	.+16     	; 0x1aa
 19a:	9c 01       	movw	r18, r24

/* 16-bit count, 4 cycles/loop */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
 19c:	88 ee       	ldi	r24, 0xE8	; 232
 19e:	93 e0       	ldi	r25, 0x03	; 3
	asm volatile (
 1a0:	01 97       	sbiw	r24, 0x01	; 1
 1a2:	f1 f7       	brne	.-4      	; 0x1a0
 1a4:	21 50       	subi	r18, 0x01	; 1
 1a6:	30 40       	sbci	r19, 0x00	; 0
 1a8:	c9 f7       	brne	.-14     	; 0x19c
 1aa:	08 95       	ret

000001ac <PwmInit>:
		_delay_loop_2(250*4);
}

void PwmInit(void)
{
	PORTB&=~_BV(PB2);
 1ac:	c2 98       	cbi	0x18, 2	; 24
	DDRB|=0X04;	//输出引脚允许
 1ae:	ba 9a       	sbi	0x17, 2	; 23

	//PWM相关定时器中断禁止
	TIMSK=0;//_BV(TICIE1)|_BV(OCIE1A)|_BV(OCIE1B)|_BV(TOIE1);
 1b0:	19 be       	out	0x39, r1	; 57
	
	//	可调相位、可调频率 PWM模式
	//	OCR1A为上限值,OC1B(PB2)输出PWM
	//	向上计数过程中比较匹配清零,向下计数过程中比较匹配时置位
	//	时钟源:4MHz/1  PWM频率:4MHz/( 1 * X ) = 可调
	TCCR1A=_BV(COM1B1)|_BV(WGM10);
 1b2:	81 e2       	ldi	r24, 0x21	; 33
 1b4:	8f bd       	out	0x2f, r24	; 47
	TCCR1B=_BV(WGM13)|_BV(CS10);
 1b6:	81 e1       	ldi	r24, 0x11	; 17
 1b8:	8e bd       	out	0x2e, r24	; 46
	
    OCR1A=0XFFFF;	//上限值设置
 1ba:	8f ef       	ldi	r24, 0xFF	; 255
 1bc:	9f ef       	ldi	r25, 0xFF	; 255
 1be:	9b bd       	out	0x2b, r25	; 43
 1c0:	8a bd       	out	0x2a, r24	; 42
    OCR1B=0X0000;   //输出初始化为低电平
 1c2:	19 bc       	out	0x29, r1	; 41
 1c4:	18 bc       	out	0x28, r1	; 40
	
	TCNT1=0;
 1c6:	1d bc       	out	0x2d, r1	; 45
 1c8:	1c bc       	out	0x2c, r1	; 44
 1ca:	08 95       	ret

000001cc <SetPWM>:
}

void SetPWM(uint val)
{
	OCR1A=val;
 1cc:	9b bd       	out	0x2b, r25	; 43
 1ce:	8a bd       	out	0x2a, r24	; 42
	OCR1B=val/2;
 1d0:	96 95       	lsr	r25
 1d2:	87 95       	ror	r24
 1d4:	99 bd       	out	0x29, r25	; 41
 1d6:	88 bd       	out	0x28, r24	; 40
 1d8:	08 95       	ret

000001da <Play>:
}

void Play(void)
{
 1da:	0f 93       	push	r16
 1dc:	1f 93       	push	r17
 1de:	cf 93       	push	r28
 1e0:	df 93       	push	r29
 1e2:	c0 e0       	ldi	r28, 0x00	; 0
 1e4:	d0 e0       	ldi	r29, 0x00	; 0
	int i=0;
 1e6:	8e 01       	movw	r16, r28
	uchar msc[2];
	while(1)
	{
		msc[0]=pgm_read_byte(g_aMusic2+i++);
 1e8:	f8 01       	movw	r30, r16
 1ea:	ea 5d       	subi	r30, 0xDA	; 218
 1ec:	ff 4f       	sbci	r31, 0xFF	; 255
 1ee:	0f 5f       	subi	r16, 0xFF	; 255
 1f0:	1f 4f       	sbci	r17, 0xFF	; 255
 1f2:	84 91       	lpm	r24, Z
 1f4:	c8 2f       	mov	r28, r24
		msc[1]=pgm_read_byte(g_aMusic2+i++);
 1f6:	f8 01       	movw	r30, r16
 1f8:	ea 5d       	subi	r30, 0xDA	; 218
 1fa:	ff 4f       	sbci	r31, 0xFF	; 255
 1fc:	0f 5f       	subi	r16, 0xFF	; 255
 1fe:	1f 4f       	sbci	r17, 0xFF	; 255
 200:	84 91       	lpm	r24, Z
 202:	d8 2f       	mov	r29, r24
		if(msc[0]==0 && msc[1]==0)
 204:	ec 2f       	mov	r30, r28
 206:	cc 23       	and	r28, r28
 208:	11 f4       	brne	.+4      	; 0x20e
 20a:	88 23       	and	r24, r24
 20c:	71 f0       	breq	.+28     	; 0x22a
			break;
		SetPWM(g_aMusicTab[msc[0]]);
 20e:	ff 27       	eor	r31, r31
 210:	ee 0f       	add	r30, r30
 212:	ff 1f       	adc	r31, r31
 214:	e0 5a       	subi	r30, 0xA0	; 160
 216:	ff 4f       	sbci	r31, 0xFF	; 255
 218:	80 81       	ld	r24, Z
 21a:	91 81       	ldd	r25, Z+1	; 0x01
 21c:	d7 df       	rcall	.-82     	; 0x1cc
		DelayMs(187*msc[1]);
 21e:	8b eb       	ldi	r24, 0xBB	; 187
 220:	d8 9f       	mul	r29, r24
 222:	c0 01       	movw	r24, r0
 224:	11 24       	eor	r1, r1
 226:	b7 df       	rcall	.-146    	; 0x196
 228:	df cf       	rjmp	.-66     	; 0x1e8
	}
	SetPWM(0);
 22a:	80 e0       	ldi	r24, 0x00	; 0
 22c:	90 e0       	ldi	r25, 0x00	; 0
 22e:	ce df       	rcall	.-100    	; 0x1cc
 230:	df 91       	pop	r29
 232:	cf 91       	pop	r28
 234:	1f 91       	pop	r17
 236:	0f 91       	pop	r16
 238:	08 95       	ret

0000023a <main>:
}

int main(void)
{
 23a:	cf e5       	ldi	r28, 0x5F	; 95
 23c:	d4 e0       	ldi	r29, 0x04	; 4
 23e:	de bf       	out	0x3e, r29	; 62
 240:	cd bf       	out	0x3d, r28	; 61
	PORTD|=_BV(PD2);	
 242:	92 9a       	sbi	0x12, 2	; 18
	PwmInit();
 244:	b3 df       	rcall	.-154    	; 0x1ac
	
	while(1)
	{
		if((PIND&_BV(PD2))==0)
 246:	82 99       	sbic	0x10, 2	; 16
 248:	02 c0       	rjmp	.+4      	; 0x24e
		  Play();
 24a:	c7 df       	rcall	.-114    	; 0x1da
 24c:	fc cf       	rjmp	.-8      	; 0x246
		else
		  DelayMs(10);
 24e:	8a e0       	ldi	r24, 0x0A	; 10
 250:	90 e0       	ldi	r25, 0x00	; 0
 252:	a1 df       	rcall	.-190    	; 0x196
 254:	f8 cf       	rjmp	.-16     	; 0x246

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -