📄 mp3play.lst
字号:
2CD4 9B80 SBIS 0x10,0
2CD5 CFFE RJMP 0x2CD4
(0163) mp3InData();
2CD6 9892 CBI 0x12,2
(0164) spiByte(0x53);
2CD7 E503 LDI R16,0x53
2CD8 DF04 RCALL _spiByte
(0165) spiByte(0xEF);
2CD9 EE0F LDI R16,0xEF
2CDA DF02 RCALL _spiByte
(0166) spiByte(0x6E);
2CDB E60E LDI R16,0x6E
2CDC DF00 RCALL _spiByte
(0167) spiByte(0x24);
2CDD E204 LDI R16,0x24
2CDE DEFE RCALL _spiByte
(0168) spiByte(0x00);
2CDF 2700 CLR R16
2CE0 DEFC RCALL _spiByte
(0169) spiByte(0x00);
2CE1 2700 CLR R16
2CE2 DEFA RCALL _spiByte
(0170) spiByte(0x00);
2CE3 2700 CLR R16
2CE4 DEF8 RCALL _spiByte
(0171) spiByte(0x00);
2CE5 2700 CLR R16
2CE6 DEF6 RCALL _spiByte
(0172) mp3OutData();
2CE7 9A92 SBI 0x12,2
(0173) delay_ms(250);
2CE8 EF0A LDI R16,0xFA
2CE9 DED1 RCALL _delay_ms
(0174) delay_ms(250);
2CEA EF0A LDI R16,0xFA
2CEB DECF RCALL _delay_ms
(0175)
(0176) while((PIND & DREQ) == 0);
2CEC 9B80 SBIS 0x10,0
2CED CFFE RJMP 0x2CEC
(0177) mp3InData();
2CEE 9892 CBI 0x12,2
(0178) spiByte(0x45);
2CEF E405 LDI R16,0x45
2CF0 DEEC RCALL _spiByte
(0179) spiByte(0x78);
2CF1 E708 LDI R16,0x78
2CF2 DEEA RCALL _spiByte
(0180) spiByte(0x69);
2CF3 E609 LDI R16,0x69
2CF4 DEE8 RCALL _spiByte
(0181) spiByte(0x74);
2CF5 E704 LDI R16,0x74
2CF6 DEE6 RCALL _spiByte
(0182) spiByte(0x00);
2CF7 2700 CLR R16
2CF8 DEE4 RCALL _spiByte
(0183) spiByte(0x00);
2CF9 2700 CLR R16
2CFA DEE2 RCALL _spiByte
(0184) spiByte(0x00);
2CFB 2700 CLR R16
2CFC DEE0 RCALL _spiByte
(0185) spiByte(0x00);
2CFD 2700 CLR R16
2CFE DEDE RCALL _spiByte
(0186) mp3OutData();
2CFF 9A92 SBI 0x12,2
(0187) delay_ms(250);
2D00 EF0A LDI R16,0xFA
2D01 DEB9 RCALL _delay_ms
(0188) delay_ms(250);
2D02 EF0A LDI R16,0xFA
2D03 DEB7 RCALL _delay_ms
(0189)
(0190) while((PIND & DREQ) == 0);
2D04 9B80 SBIS 0x10,0
2D05 CFFE RJMP 0x2D04
(0191) mp3InData();
2D06 9892 CBI 0x12,2
(0192) spiByte(0x53);
2D07 E503 LDI R16,0x53
2D08 DED4 RCALL _spiByte
(0193) spiByte(0xEF);
2D09 EE0F LDI R16,0xEF
2D0A DED2 RCALL _spiByte
(0194) spiByte(0x6E);
2D0B E60E LDI R16,0x6E
2D0C DED0 RCALL _spiByte
(0195) spiByte(0x44);
2D0D E404 LDI R16,0x44
2D0E DECE RCALL _spiByte
(0196) spiByte(0x00);
2D0F 2700 CLR R16
2D10 DECC RCALL _spiByte
(0197) spiByte(0x00);
2D11 2700 CLR R16
2D12 DECA RCALL _spiByte
(0198) spiByte(0x00);
2D13 2700 CLR R16
2D14 DEC8 RCALL _spiByte
(0199) spiByte(0x00);
2D15 2700 CLR R16
2D16 DEC6 RCALL _spiByte
(0200) mp3OutData();
2D17 9A92 SBI 0x12,2
(0201) delay_ms(250);
2D18 EF0A LDI R16,0xFA
2D19 DEA1 RCALL _delay_ms
(0202) delay_ms(250);
2D1A EF0A LDI R16,0xFA
2D1B DE9F RCALL _delay_ms
(0203)
(0204) while((PIND & DREQ) == 0);
2D1C 9B80 SBIS 0x10,0
2D1D CFFE RJMP 0x2D1C
(0205) mp3InData();
2D1E 9892 CBI 0x12,2
(0206) spiByte(0x45);
2D1F E405 LDI R16,0x45
2D20 DEBC RCALL _spiByte
(0207) spiByte(0x78);
2D21 E708 LDI R16,0x78
2D22 DEBA RCALL _spiByte
(0208) spiByte(0x69);
2D23 E609 LDI R16,0x69
2D24 DEB8 RCALL _spiByte
(0209) spiByte(0x74);
2D25 E704 LDI R16,0x74
2D26 DEB6 RCALL _spiByte
(0210) spiByte(0x00);
2D27 2700 CLR R16
2D28 DEB4 RCALL _spiByte
(0211) spiByte(0x00);
2D29 2700 CLR R16
2D2A DEB2 RCALL _spiByte
(0212) spiByte(0x00);
2D2B 2700 CLR R16
2D2C DEB0 RCALL _spiByte
(0213) spiByte(0x00);
2D2D 2700 CLR R16
2D2E DEAE RCALL _spiByte
(0214) mp3OutData();
2D2F 9A92 SBI 0x12,2
(0215) delay_ms(250);
2D30 EF0A LDI R16,0xFA
2D31 DE89 RCALL _delay_ms
(0216) delay_ms(250);
2D32 EF0A LDI R16,0xFA
2D33 DE87 RCALL _delay_ms
2D34 9621 ADIW R28,1
2D35 9508 RET
_record_init:
2D36 9721 SBIW R28,1
(0217)
(0218) }
(0219) /******************************************************************
(0220) record
(0221) ******************************************************************/
(0222) void record_init(void)
(0223) { //mp3WriteReg(SPI_MODE, 0x58, 0x04); /* Normal SW reset + other bits */
(0224)
(0225) mp3WriteReg(SPI_BASS, 0x00, 0x00); /* Bass/treble disabled */
2D37 2422 CLR R2
2D38 8228 STD Y+0,R2
2D39 2722 CLR R18
2D3A E002 LDI R16,2
2D3B DEAF RCALL _mp3WriteReg
(0226) delay_ms(250);
2D3C EF0A LDI R16,0xFA
2D3D DE7D RCALL _delay_ms
(0227) mp3WriteReg(SPI_CLOCKF, 0x58, 0x00); /* 2.0x 12.288MHz */
2D3E 2422 CLR R2
2D3F 8228 STD Y+0,R2
2D40 E528 LDI R18,0x58
2D41 E003 LDI R16,3
2D42 DEA8 RCALL _mp3WriteReg
(0228) delay_ms(250);
2D43 EF0A LDI R16,0xFA
2D44 DE76 RCALL _delay_ms
(0229) mp3WriteReg(SPI_AICTRL0, 0x00, 12); /* Div -> 12=8kHz 8=12kHz 6=16kHz */
2D45 E08C LDI R24,0xC
2D46 8388 STD Y+0,R24
2D47 2722 CLR R18
2D48 E00C LDI R16,0xC
2D49 DEA1 RCALL _mp3WriteReg
(0230) delay_ms(250);
2D4A EF0A LDI R16,0xFA
2D4B DE6F RCALL _delay_ms
(0231) mp3WriteReg(SPI_AICTRL1, 0x00, 0x00); /* Auto gain */
2D4C 2422 CLR R2
2D4D 8228 STD Y+0,R2
2D4E 2722 CLR R18
2D4F E00D LDI R16,0xD
2D50 DE9A RCALL _mp3WriteReg
(0232) delay_ms(250);
2D51 EF0A LDI R16,0xFA
2D52 DE68 RCALL _delay_ms
(0233) mp3WriteReg(SPI_MODE, 0x58, 0x04); /* Normal SW reset + other bits */
2D53 E084 LDI R24,4
2D54 8388 STD Y+0,R24
2D55 E528 LDI R18,0x58
2D56 2700 CLR R16
2D57 DE93 RCALL _mp3WriteReg
(0234) delay_ms(250);
2D58 EF0A LDI R16,0xFA
2D59 DE61 RCALL _delay_ms
2D5A 9621 ADIW R28,1
2D5B 9508 RET
FILE: E:\software\MP3程序\Usart\Com.c
(0001) #include <iom64v.h>
(0002) #include <macros.h>
(0003) /*-----------------------------------------------------------------------
(0004) 延时函数
(0005) 系统时钟:8M
(0006) -----------------------------------------------------------------------*/
(0007) void Usart_init(void)
(0008) {
(0009) //set com0 for debug
(0010) UBRR0H = 0X00;
_Usart_init:
2D5C 2422 CLR R2
2D5D 92200090 STS 0x90,R2
(0011) UBRR0L = 0X33;
2D5F E383 LDI R24,0x33
2D60 B989 OUT 0x09,R24
(0012) UCSR0B = (1<<3)|(1<<4); //调试信息不允许中断
2D61 E188 LDI R24,0x18
2D62 B98A OUT 0x0A,R24
2D63 9508 RET
(0013) }
(0014)
(0015) void USART_Transmit( unsigned char data )
(0016) {
(0017) /* 等待发送缓冲器为空*/
(0018) while ( !( UCSR0A & (1<<5)) );
_USART_Transmit:
data --> R16
2D64 9B5D SBIS 0x0B,5
2D65 CFFE RJMP _USART_Transmit
(0019) /* 将数据放入缓冲器,发送数据*/
(0020) UDR0 = data;
2D66 B90C OUT 0x0C,R16
2D67 9508 RET
(0021) }
(0022) unsigned char USART_Receive( void )
(0023) {
(0024) /* 等待接收数据*/
(0025) while ( !(UCSR0A & (1<<7)) );
_USART_Receive:
2D68 9B5F SBIS 0x0B,7
2D69 CFFE RJMP _USART_Receive
(0026) /* 从缓冲器中获取并返回数据*/
(0027) return UDR0;
2D6A B10C IN R16,0x0C
2D6B 9508 RET
_Print_str:
pt --> R20
2D6C 940E7CDF CALL push_gset1
2D6E 01A8 MOVW R20,R16
(0028) }
(0029) void Print_str(unsigned char *pt) //子
(0030) {
2D6F C004 RJMP 0x2D74
(0031) while(*pt != '\0') USART_Transmit(*pt++);
2D70 01FA MOVW R30,R20
2D71 9101 LD R16,Z+
2D72 01AF MOVW R20,R30
2D73 DFF0 RCALL _USART_Transmit
2D74 01FA MOVW R30,R20
2D75 8020 LDD R2,Z+0
2D76 2022 TST R2
2D77 F7C1 BNE 0x2D70
2D78 940E7CE2 CALL pop_gset1
2D7A 9508 RET
_Print_val:
temp --> R20
data --> R22
2D7B 940E7CF6 CALL push_gset2
2D7D 2F60 MOV R22,R16
(0032) }
(0033) void Print_val(unsigned char data)
(0034) {
(0035) unsigned char temp;
(0036) temp = data;
2D7E 2F46 MOV R20,R22
(0037) temp >>= 4;
2D7F 2F84 MOV R24,R20
2D80 9582 SWAP R24
2D81 708F ANDI R24,0xF
2D82 2F48 MOV R20,R24
(0038) temp &= 0x0f;
2D83 704F ANDI R20,0xF
(0039) if(temp > 0x09) USART_Transmit(temp+0x37);
2D84 E089 LDI R24,0x9
2D85 1784 CP R24,R20
2D86 F420 BCC 0x2D8B
2D87 2F04 MOV R16,R20
2D88 5C09 SUBI R16,0xC9
2D89 DFDA RCALL _USART_Transmit
2D8A C003 RJMP 0x2D8E
(0040) else USART_Transmit(temp+'0');
2D8B 2F04 MOV R16,R20
2D8C 5D00 SUBI R16,0xD0
2D8D DFD6 RCALL _USART_Transmit
(0041) temp = data & 0x0f;
2D8E 2F46 MOV R20,R22
2D8F 704F ANDI R20,0xF
(0042) if(temp > 0x09) USART_Transmit(temp+0x37);
2D90 E089 LDI R24,0x9
2D91 1784 CP R24,R20
2D92 F420 BCC 0x2D97
2D93 2F04 MOV R16,R20
2D94 5C09 SUBI R16,0xC9
2D95 DFCE RCALL _USART_Transmit
2D96 C003 RJMP 0x2D9A
(0043) else USART_Transmit(temp+'0');
2D97 2F04 MOV R16,R20
2D98 5D00 SUBI R16,0xD0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -