📄 mp3._c
字号:
/************************************************************/
/* MP3 Code for M32L */
/* By pasyong */
/* 2006-4 */
/* Base ICC6.31A */
/************************************************************/
#include <iom32v.h>
#include <macros.h>
#include <stdio.h>
#include "1011.h"
#include "mp3.h"
#include "sd.h"
#include "fat.h"
#include "uarst.h"
#include "3310.h"
void key_port(void)
{
DDRD=0X00;
PORTD=0XFF;
}
void main()
{
key_port();
spi_init();
mp3_port_init();vs1011_init();vs1011_init();
sd_port_init();SD_Init();SD_Init();
uart0_init();
SPCR = 0x50; //提速
SPSR = 0x01; //setup SPI
lcd_port();
LCD_init();
fatInit(); //查询SDFAT格式
if(Fat32Enabled) //设置FAT格式标志
FAT_MASK=FAT32_MASK;
else
FAT_MASK=FAT16_MASK;
while(1)
{
//播放音乐
for(t=3;t<50;t++)
{
flag=0;
mp3_play(fatGetDirEntry(t));
}
}
}
void mp3_play(unsigned long FirstClust)
{
uint32 LBA,NextCluster;
uint16 i,data_pointer,rate;
uint8 n,t1;
NextCluster = FirstClust;
while (1)
{
LBA =fatClustToSect(NextCluster);
for (i=0;i<SectorsPerCluster;i++)
{
if(flag==0) ReadBlock(LBA+i); //读完后文件指针自动后移
//按键处理程序
//ST/PS键按下
if(!(PIND&STOP))
{
delay_nus(250);
if(!(PIND&STOP))
{
flag^=0x01;
}
}
//VOLUP键按下
if(!(PIND&VOLDOWN))
{
delay_nus(250);
if(!(PIND&VOLDOWN))
{
vol=vol+((uint)(2<<8)+2);
if(vol>=0xF0F0) vol=0xF0F0;
else vs1011_cmd_write(0x0b,vol); //每次左右声道VOL减2
}
}
//VOLDOWN键按下
if(!(PIND&VOLUP))
{
delay_nus(250);
if(!(PIND&VOLUP))
{
vol=vol-((uint)(2<<8)+2);
if(vol<=0x0505) vol=0x0505;
else vs1011_cmd_write(0x0b,vol); //每次左右声道VOL加2
}
}
//NEXT键按下
if(!(PIND&NEXTSONG))
{
delay_nus(250);
if(!(PIND&NEXTSONG)) goto NEXT; //跳到下一首歌曲
}
//PREV键按下
if(!(PIND&PREVSONG))
{
delay_nus(250);
if(!(PIND&PREVSONG))
{
t=t-2;goto NEXT; //返回前一首歌曲
}
}
data_pointer=0;
while(data_pointer<512)
{
if(PINB&MP3_DATA_REQ)
{
for(n=0;n<32;n++)
{
vs1011_data_write(BUFFER[data_pointer]);
data_pointer++;
}
}
if (data_pointer==511) break; //如果现在的数据不够了,则跳出来
}
}
NextCluster = fatNextCluster(NextCluster);
if (NextCluster >=(CLUST_RSRVD&FAT_MASK))break;
}
NEXT: delay_nus(3); /* 下一首歌曲*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -