📄 mp3_player_06.lss
字号:
d27: 6d 70 33 00 mp3.
00000d2b <__c.2153>:
d2b: 46 69 6c 65 20 6e 6f 74 20 66 6f 75 6e 64 21 00 File not found!.
...
00000d3c <__ctors_end>:
d3c: 11 24 eor r1, r1
d3e: 1f be out 0x3f, r1 ; 63
d40: cf ef ldi r28, 0xFF ; 255
d42: d0 e1 ldi r29, 0x10 ; 16
d44: de bf out 0x3e, r29 ; 62
d46: cd bf out 0x3d, r28 ; 61
00000d48 <__do_copy_data>:
d48: 11 e0 ldi r17, 0x01 ; 1
d4a: a0 e0 ldi r26, 0x00 ; 0
d4c: b1 e0 ldi r27, 0x01 ; 1
d4e: e2 ed ldi r30, 0xD2 ; 210
d50: fd e8 ldi r31, 0x8D ; 141
d52: 00 e0 ldi r16, 0x00 ; 0
d54: 0b bf out 0x3b, r16 ; 59
d56: 02 c0 rjmp .+4 ; 0xd5c <__do_copy_data+0x14>
d58: 07 90 elpm r0, Z+
d5a: 0d 92 st X+, r0
d5c: ae 34 cpi r26, 0x4E ; 78
d5e: b1 07 cpc r27, r17
d60: d9 f7 brne .-10 ; 0xd58 <__do_copy_data+0x10>
00000d62 <__do_clear_bss>:
d62: 1a e0 ldi r17, 0x0A ; 10
d64: ae e4 ldi r26, 0x4E ; 78
d66: b1 e0 ldi r27, 0x01 ; 1
d68: 01 c0 rjmp .+2 ; 0xd6c <.do_clear_bss_start>
00000d6a <.do_clear_bss_loop>:
d6a: 1d 92 st X+, r1
00000d6c <.do_clear_bss_start>:
d6c: af 30 cpi r26, 0x0F ; 15
d6e: b1 07 cpc r27, r17
d70: e1 f7 brne .-8 ; 0xd6a <.do_clear_bss_loop>
d72: 0e 94 38 07 call 0xe70 ; 0xe70 <main>
d76: 0c 94 e8 46 jmp 0x8dd0 ; 0x8dd0 <_exit>
00000d7a <__bad_interrupt>:
d7a: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000d7e <Timer1_Initial>:
//Timer initialization offer seed of the srandom()
void Timer1_Initial()
{
d7e: 10 92 53 01 sts 0x0153, r1
key_value = 0;
key_count = 0;
d82: 10 92 54 01 sts 0x0154, r1
TCNT1H=0x00;
d86: 1d bc out 0x2d, r1 ; 45
TCNT1L=0x00;
d88: 1c bc out 0x2c, r1 ; 44
TCCR1A=0x00;
d8a: 1f bc out 0x2f, r1 ; 47
TCCR1B=0x01;
d8c: 81 e0 ldi r24, 0x01 ; 1
d8e: 8e bd out 0x2e, r24 ; 46
TIMSK |= 1<<TOIE1;
d90: 87 b7 in r24, 0x37 ; 55
d92: 84 60 ori r24, 0x04 ; 4
d94: 87 bf out 0x37, r24 ; 55
sei();
d96: 78 94 sei
d98: 08 95 ret
00000d9a <__vector_14>:
}
SIGNAL(TIMER1_OVF_vect)
{
d9a: 1f 92 push r1
d9c: 0f 92 push r0
d9e: 0f b6 in r0, 0x3f ; 63
da0: 0f 92 push r0
da2: 11 24 eor r1, r1
da4: 8f 93 push r24
//TCCR1B = 0;
//printf_P(PSTR("\r\nvalue = %x"),key_value);
if((key_value&KEY_VALID) ==0)
da6: 80 91 53 01 lds r24, 0x0153
daa: 84 fd sbrc r24, 4
dac: 5b c0 rjmp .+182 ; 0xe64 <__vector_14+0xca>
{
//printf_P(PSTR("\r\nkey not valid"));
if((PINE&(STOP|MODE|NEXT|PREV|UP|DOWN)) == (STOP|MODE|NEXT|PREV|UP|DOWN))
dae: 81 b1 in r24, 0x01 ; 1
db0: 8c 7f andi r24, 0xFC ; 252
db2: 8c 3f cpi r24, 0xFC ; 252
db4: f9 f4 brne .+62 ; 0xdf4 <__vector_14+0x5a>
{
//printf_P(PSTR("\r\nno key pressed"));
if(key_value&KEY_LONG)
db6: 80 91 53 01 lds r24, 0x0153
dba: 85 ff sbrs r24, 5
dbc: 03 c0 rjmp .+6 ; 0xdc4 <__vector_14+0x2a>
{
key_value = 0;
dbe: 10 92 53 01 sts 0x0153, r1
dc2: 50 c0 rjmp .+160 ; 0xe64 <__vector_14+0xca>
}
else if((key_value&KEY_PRESEED) && (key_count>KEY_VALID_TIME))
dc4: 80 91 53 01 lds r24, 0x0153
dc8: 87 ff sbrs r24, 7
dca: 0f c0 rjmp .+30 ; 0xdea <__vector_14+0x50>
dcc: 80 91 54 01 lds r24, 0x0154
dd0: 8b 30 cpi r24, 0x0B ; 11
dd2: 58 f0 brcs .+22 ; 0xdea <__vector_14+0x50>
{
//printf_P(PSTR("\r\nkey released"));
key_value |= KEY_RELEASED;
dd4: 80 91 53 01 lds r24, 0x0153
dd8: 80 64 ori r24, 0x40 ; 64
dda: 80 93 53 01 sts 0x0153, r24
key_value |= KEY_VALID;
dde: 80 91 53 01 lds r24, 0x0153
de2: 80 61 ori r24, 0x10 ; 16
de4: 80 93 53 01 sts 0x0153, r24
de8: 02 c0 rjmp .+4 ; 0xdee <__vector_14+0x54>
key_count = 0;
}
else
{
key_value = 0;
dea: 10 92 53 01 sts 0x0153, r1
key_count = 0;
dee: 10 92 54 01 sts 0x0154, r1
df2: 38 c0 rjmp .+112 ; 0xe64 <__vector_14+0xca>
}
}
else if(key_value&KEY_PRESEED)
df4: 80 91 53 01 lds r24, 0x0153
df8: 87 ff sbrs r24, 7
dfa: 15 c0 rjmp .+42 ; 0xe26 <__vector_14+0x8c>
{
//printf_P(PSTR("\r\nkey used preseed"));
if(key_count == KEY_LONG_TIME)
dfc: 80 91 54 01 lds r24, 0x0154
e00: 8f 3f cpi r24, 0xFF ; 255
e02: 39 f4 brne .+14 ; 0xe12 <__vector_14+0x78>
{
//printf_P(PSTR("\r\nlong key prseed"));
key_value |= KEY_LONG|KEY_VALID;
e04: 80 91 53 01 lds r24, 0x0153
e08: 80 63 ori r24, 0x30 ; 48
e0a: 80 93 53 01 sts 0x0153, r24
key_count= 0;
e0e: 10 92 54 01 sts 0x0154, r1
}
if((key_value&KEY_LONG)==0)
e12: 80 91 53 01 lds r24, 0x0153
e16: 85 fd sbrc r24, 5
e18: 25 c0 rjmp .+74 ; 0xe64 <__vector_14+0xca>
{
key_count++;
e1a: 80 91 54 01 lds r24, 0x0154
e1e: 8f 5f subi r24, 0xFF ; 255
e20: 80 93 54 01 sts 0x0154, r24
e24: 1f c0 rjmp .+62 ; 0xe64 <__vector_14+0xca>
}
}
else
{
if((PINE&STOP)!=STOP)
e26: 0e 99 sbic 0x01, 6 ; 1
e28: 03 c0 rjmp .+6 ; 0xe30 <__vector_14+0x96>
{
//printf_P(PSTR("\r\nstop key first pressed"));
key_value = KEY_STOP;
e2a: 10 92 53 01 sts 0x0153, r1
e2e: 15 c0 rjmp .+42 ; 0xe5a <__vector_14+0xc0>
key_value |= KEY_PRESEED;
}
else if((PINE&MODE)!=MODE)
e30: 0f 99 sbic 0x01, 7 ; 1
e32: 02 c0 rjmp .+4 ; 0xe38 <__vector_14+0x9e>
{
//printf_P(PSTR("\r\nmode key first pressed"));
key_value = KEY_MODE;
e34: 81 e0 ldi r24, 0x01 ; 1
e36: 0f c0 rjmp .+30 ; 0xe56 <__vector_14+0xbc>
key_value |= KEY_PRESEED;
}
else if((PINE&NEXT)!=NEXT)
e38: 0b 99 sbic 0x01, 3 ; 1
e3a: 02 c0 rjmp .+4 ; 0xe40 <__vector_14+0xa6>
{
//printf_P(PSTR("\r\nnext key first pressed"));
key_value = KEY_NEXT;
e3c: 82 e0 ldi r24, 0x02 ; 2
e3e: 0b c0 rjmp .+22 ; 0xe56 <__vector_14+0xbc>
key_value |= KEY_PRESEED;
}
else if((PINE&PREV)!=PREV)
e40: 0a 99 sbic 0x01, 2 ; 1
e42: 02 c0 rjmp .+4 ; 0xe48 <__vector_14+0xae>
{
//printf_P(PSTR("\r\nprev key first pressed"));
key_value = KEY_PREV;
e44: 83 e0 ldi r24, 0x03 ; 3
e46: 07 c0 rjmp .+14 ; 0xe56 <__vector_14+0xbc>
key_value |= KEY_PRESEED;
}
else if((PINE&UP)!=UP)
e48: 0d 99 sbic 0x01, 5 ; 1
e4a: 02 c0 rjmp .+4 ; 0xe50 <__vector_14+0xb6>
{
//printf_P(PSTR("\r\nV+ key first pressed"));
key_value = KEY_UP;
e4c: 84 e0 ldi r24, 0x04 ; 4
e4e: 03 c0 rjmp .+6 ; 0xe56 <__vector_14+0xbc>
key_value |= KEY_PRESEED;
}
else if((PINE&DOWN)!=DOWN)
e50: 0c 99 sbic 0x01, 4 ; 1
e52: 08 c0 rjmp .+16 ; 0xe64 <__vector_14+0xca>
{
//printf_P(PSTR("\r\nV- key first pressed"));
key_value = KEY_DOWN;
e54: 85 e0 ldi r24, 0x05 ; 5
e56: 80 93 53 01 sts 0x0153, r24
key_value |= KEY_PRESEED;
e5a: 80 91 53 01 lds r24, 0x0153
e5e: 80 68 ori r24, 0x80 ; 128
e60: 80 93 53 01 sts 0x0153, r24
e64: 8f 91 pop r24
e66: 0f 90 pop r0
e68: 0f be out 0x3f, r0 ; 63
e6a: 0f 90 pop r0
e6c: 1f 90 pop r1
e6e: 18 95 reti
00000e70 <main>:
}
}
}
//TCCR1B = 0x01;
}
int main()
{
e70: 1f 93 push r17
//unsigned char temp;
DDRE = 0x00;
e72: 12 b8 out 0x02, r1 ; 2
PORTE = 0xff;
e74: 1f ef ldi r17, 0xFF ; 255
e76: 13 b9 out 0x03, r17 ; 3
PORTB |= 1<<PB0; /* we should make sure that AVR's SS pin is held high no mater the spi is master or slave*/
e78: c0 9a sbi 0x18, 0 ; 24
LCD_BL_CON;
e7a: 80 91 64 00 lds r24, 0x0064
e7e: 88 60 ori r24, 0x08 ; 8
e80: 80 93 64 00 sts 0x0064, r24
LCD_BL_ON;
e84: 80 91 65 00 lds r24, 0x0065
e88: 87 7f andi r24, 0xF7 ; 247
e8a: 80 93 65 00 sts 0x0065, r24
OSCCAL = 0xff;
e8e: 10 93 6f 00 sts 0x006F, r17
COM_Initial(MYUBRR);
e92: 87 e0 ldi r24, 0x07 ; 7
e94: 90 e0 ldi r25, 0x00 ; 0
e96: 0e 94 1a 26 call 0x4c34 ; 0x4c34 <COM_Initial>
VS1003B_Init();
e9a: 0e 94 b6 26 call 0x4d6c ; 0x4d6c <VS1003B_Init>
lcdInit();
e9e: 0e 94 21 2c call 0x5842 ; 0x5842 <lcdInit>
Timer1_Initial();
ea2: 0e 94 bf 06 call 0xd7e ; 0xd7e <Timer1_Initial>
if(MCUCSR & 1<<BORF)
ea6: 04 b6 in r0, 0x34 ; 52
ea8: 02 fe sbrs r0, 2
eaa: 0d c0 rjmp .+26 ; 0xec6 <main+0x56>
{
lcdClrDisBuf();
eac: 0e 94 a0 2b call 0x5740 ; 0x5740 <lcdClrDisBuf>
LCD_print12_P(0,12,PSTR("Low Battery!!!"));
eb0: 4e e3 ldi r20, 0x3E ; 62
eb2: 51 e0 ldi r21, 0x01 ; 1
eb4: 6c e0 ldi r22, 0x0C ; 12
eb6: 70 e0 ldi r23, 0x00 ; 0
eb8: 80 e0 ldi r24, 0x00 ; 0
eba: 90 e0 ldi r25, 0x00 ; 0
ebc: 0e 94 e0 2f call 0x5fc0 ; 0x5fc0 <LCD_print12_P>
lcdUpdateDisplay();
ec0: 0e 94 a8 2b call 0x5750 ; 0x5750 <lcdUpdateDisplay>
ec4: ff cf rjmp .-2 ; 0xec4 <main+0x54>
while(1);
}
#if 0
lcdClrDisBuf();
LCD_print12_P(0,0,PSTR(" Mp3 Player\nX-mas Special\nFor Sara Ye\n-- by Michael"));
lcdUpdateDisplay();
for(temp = 0;temp<40;temp++)
Delay(0xffff);
#endif
OSCCAL = 0xff;
ec6: 10 93 6f 00 sts 0x006F, r17
lcdClrDisBuf();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -