?? 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播放器的設(shè)計
// 端口占用資源:
//========================================================
unsigned flag=0;
int main(void)
{
while(1)
{
Init();
key=getkey();
if(key==key3) flag++;
if(flag>4) flag=1; //調(diào)用初始化端口子程序
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
//
//
// 實現(xiàn)功能: 通過自動方式播放語音資源
// 參數(shù): 1.uiSndIndex:語音資源序號 2.uiDAC_Channel:語音播放通道
// 返回值: 無
//========================================================
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Init()
{
*P_IOA_Dir=0xfff0;
*P_IOA_Attrib=0xffff;
*P_IOA_Data=0x0000;
*P_IOB_Dir=0xff0f; //設(shè)置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) //判斷當(dāng)前是否在播放?返回最低位為1則表示當(dāng)前在播放
{
SACM_A2000_ServiceLoop(); //服務(wù)程序
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) //判斷當(dāng)前是否在播放?返回最低位為1則表示當(dāng)前在播放
{
SACM_A2000_ServiceLoop(); //服務(wù)程序
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;}//清看門狗操作
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -