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

📄 mp3play.lst

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -