📄 mp3.c
字号:
#include "a2000.h"
#include "SPCE061A.h"
#define key1 1
#define key2 2
#define key3 4
unsigned number[10]={0x3000,0x3100,0x3200,0x3300,0x3400,0x3500,0x3600,0x3700,0x3800,0x3900};
unsigned start1[8]= {0x5700,0x6500,0x6c00,0x4300,0x6f00,0x6d00,0x6500,0x2100}; //Welcome
unsigned start2[15]={0x4500,0x6e00,0x7400,0x6500,0x7200,0x2000,0x7400,0x6800,0x6500,
0x2000,0x6b00,0x6500,0x7900,0x3300,0x2100}; // Enter the key3!
unsigned play1[12]={0x5000,0x6c00,0x6100,0x7900,0x2000,0x6e00,0x7500,0x6d00,0x6200,
0x6500,0x7200,0x2000}; //Play
unsigned play2[10]={0x6c00,0x6100,0x7300,0x7400,0x2000,0x2000,0x6e00,0x6500,0x7800,0x7400};
// last next
unsigned volume1[6]={0x5600,0x6f00,0x6c00,0x7500,0x6d00,0x6500}; //volume
unsigned volume2[6]={0x2d00,0x2000,0x2000,0x2000,0x2000,0x2b00}; // - +
unsigned record[9]={0x5200,0x6500,0x6300,0x6f00,0x7200,0x6400,0x2e00,
0x2e00,0x2e00}; //record...
unsigned play_record[11]={0x5000,0x6c00,0x6100,0x7900,0x2000,0x7200,0x6500,
0x6300,0x6f00,0x7200,0x6400}; //play record
extern void show_start();
extern void show_play();
extern void show_volume();
extern void show_record();
extern void show_play_record();
void Init();
unsigned getkey();
void PlaySnd_Auto(int Song);
void volume_fluctuata();
void Delay();
unsigned volume=7,song=1,key;
//========================================================
// 程序名称:简易mp3播放器的设计
// 端口占用资源:
//========================================================
unsigned flag=0;
int main(void)
{
while(1)
{
Init();
key=getkey();
if(key==key3) flag++;
if(flag>4) flag=1; //调用初始化端口子程序
switch(flag)
{
case 0: show_start();break;
case 1: show_play(); PlaySnd_Auto(song);break;
case 2: show_volume; volume_fluctuata();break;
// case 3: show_record; Recording(); break;
// case 4: show_play_record; record_play(); break;
default : break;
}
*P_Watchdog_Clear=0x0001;
}
}
//========================================================
// 语法格式: void PlaySnd_Auto(unsigned int uiSndIndex,unsigned int
//
//
// 实现功能: 通过自动方式播放语音资源
// 参数: 1.uiSndIndex:语音资源序号 2.uiDAC_Channel:语音播放通道
// 返回值: 无
//========================================================
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Init()
{
*P_IOA_Dir=0xfff0;
*P_IOA_Attrib=0xffff;
*P_IOA_Data=0x0000;
*P_IOB_Dir=0xff0f; //设置IOB口4,5位为带上拉电阻的输入;0-3位为同相高电平输出
*P_IOB_Attrib=0xff0f;
*P_IOB_Data=0x00f0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void PlaySnd_Auto(int Song)
{
SACM_A2000_Initial(1); //初始化语音播放,自动方式
SACM_A2000_Play(song,1,3); //播放语音
while((SACM_A2000_Status() & 0x0001) != 0) //判断当前是否在播放?返回最低位为1则表示当前在播放
{
SACM_A2000_ServiceLoop(); //服务程序
switch(key)
{
case 2: song++; //下一曲
if(song>3) song=0;
SACM_A2000_Play(song,1,3);
show_play();
break;
case 1: song--; //上一曲
if(song<0) song=3;
SACM_A2000_Play(song,1,3);
show_play();
break;
default : break;
}
*P_Watchdog_Clear=0x0001;
}
SACM_A2000_Stop(); //停止
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void volume_fluctuata()
{
SACM_A2000_Initial(1); //初始化语音播放,自动方式
SACM_A2000_Play(song,1,3); //播放语音
while((SACM_A2000_Status() & 0x0001) != 0) //判断当前是否在播放?返回最低位为1则表示当前在播放
{
SACM_A2000_ServiceLoop(); //服务程序
switch(key)
{
case 2: volume++; //下一曲
if(volume>=15) volume=15;
break;
case 1: volume--; //上一曲
if(volume<=0) volume=0;
break;
default : break;
}
SACM_A2000_Volume(volume);
show_volume();
*P_Watchdog_Clear=0x0001;
}
SACM_A2000_Stop(); //停止
}
unsigned getkey()
{
unsigned Data_A,k1,k2;
Data_A=*P_IOA_Data;
Data_A=~Data_A;
while((Data_A&0x000f)^0x000f)
{ k1 =*P_IOA_Data;
Delay(3000); //延时15ms
k2=*P_IOA_Data;
if(k1 ==k2)
{
while((Data_A&0x000f)^0x000f)
*P_Watchdog_Clear=0x0001;
k1=*P_IOA_Data&0x000f;
return k1;
}
else break;
*P_Watchdog_Clear=0x0001;
}
return 0xffff;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
void Delay(int number)
{
unsigned int uiCount;
for(uiCount=0;uiCount<number;uiCount++)
{*P_Watchdog_Clear=0x0001;}//清看门狗操作
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -