📄 main.c
字号:
#include "REGSND1.H"
#include "UART.H"
/** 宏定义USB端点中断的标志位 **/
#define EP2 (0x1<<2)
#define EP1 (0x1<<1)
#define EP0 (0x1<<0)
#define EKB (0x10)
/** 宏定义MP3播放功能的标志位 **/
#define SELECTSONG 3
#define PLAY 1
#define STOP 0
/** 声明外部函数 **/
extern void AtmelUSBInit();
extern void EpEnable();
extern void Ep0();
extern void main_txdone();
extern void main_rxdone();
extern void Flash_Reset(void);
extern void MP3_Init();
extern void PlayInit(unsigned char *SongName);
extern unsigned char GetMP3List(void);
extern void Func();
extern void Next();
extern void Previous();
extern void PlayPause();
extern void PlayMP3(unsigned char *SongName);
extern void KeyBoardInit();
extern void Format_Fat12Media(void);
//extern void ReadPage(unsigned int block, unsigned int page, unsigned char *pPage)
/** 定义MP3播放相关的变量 **/
unsigned char SONG[88] = {'M', 'O', 'O', 'N', ' ', ' ', ' ', ' ', 'T', 'X', 'T'};
unsigned char data CurrentFun = SELECTSONG;
unsigned char data PlayState = STOP;
unsigned char data NowPlaying = 0;
unsigned char data NumofSong = 0;
unsigned char data MP3InitFlag;
void key_interrupt() interrupt 11
{
unsigned char i = 200;
EA = 0; //关中断
IEN1 &= (~EKB); //Enable KeyBoard Interrupt
while (i)
{
i--;
}
i = KBSTA; //取键盘中断位
switch (i)
{ //依次处理四个键中的某个键
case 2 : {printu(">>>> FUNC <<<<\n"); Func(); break; } //被按下时的情况
case 8 : { printu(">>>> NEXT <<<<\n"); Next(); break;}
case 4 : { printu(">>>> PREV <<<<\n"); Previous(); break;}
case 1 : { printu(">>>> PLAY <<<<\n"); PlayPause(); break;}
default : break;
}
IEN1 |= EKB; //Enable KeyBoard Interrupt
EA = 1; //开中断
return;
}
void main()
{
// unsigned char a=2;
CKCON|=0x01; //使能该单片机的X2模式
printu(">>>> KT MP3 USB Disk V1.00 <<<<\n");
//CKCON|=0x01; //使能该单片机的X2模式
Flash_Reset(); //Flash 芯片复位
//printu(">>>> FLASH RESET SUCCESS <<<<\n");
//delay();
if(P3_4) //此引脚为USB接入检测端
//if(a==1)
{ //在此将设备做为U盘处理
printu(">>>>Entering USB Mode...<<<<\n"); //输出进入U盘功能的信息
AtmelUSBInit(); //USB寄存器配置函数
EpEnable(); //使能有关USB的配置
while(1)
{
if (UEPINT & EP0) Ep0();
if (UEPINT & EP1) main_txdone();
if (UEPINT & EP2) main_rxdone();
UEPINT=0;
}
}
else //进入MP3播放模式
{
printu("Entering MP3 Mode...\n");
MP3_Init(); //MP3初始化
KeyBoardInit(); //键盘初始化
//CKCON|=0x01; //使能该单片机的X2模式
MP3InitFlag = 1;
EA = 1; //开中断,键盘可以开始工作
P3_5 = 0; //打开USB灯亮
PlayState=PLAY;
NumofSong = GetMP3List(); //得到U盘中的MP3歌曲列表
CKCON|=0x01; //使能该单片机的X2模式
printuf("Song:%x\n", NumofSong); //输出歌曲总数信息
if(NumofSong == 0)
{
printu("There is no MP3 file in USB Disk!\n");
P3_5 = 1; //关闭指示LED
}
while(1)
{
if(NumofSong != 0)
{
if(MP3InitFlag)
{
PlayInit(&SONG[11 * NowPlaying]);
MP3InitFlag = 0;
}
//printu("playing...\n");
PlayMP3(&SONG[11 * NowPlaying]); //如果处于播放状态,则播放当前歌曲
//printu("end of playing\n");
}
if(NowPlaying == NumofSong)
{
printu("end of playing\n");
PlayState = STOP; //全部歌曲播放完了,播放器停止
NowPlaying = 0; //循环播放
}
P3_5 =~P3_5; //指示LED闪烁
}
}
// else ; // printu(">>>> KT MP3 USB Disk V5.55 <<<<\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -