?? main.c
字號:
#include <iom64v.h>
#include <macros.h>
#include <string.h>
#include <stdio.h>
#include "main.h"
#include "vs1003.h"
#include "ch375interface.h"
#define CH375_INT_WIR ( PINC & 0x80 )
#define PORT_ST (PINB & 0x01) // PB0 輸入按鍵ST/PS
#define FILE_DATA_BUF_LEN 0x0200
#include "CH375HFB.H"
#define N_ST 0x01 //PB0 輸入按鍵ST/PS
#define N_PREV 0x10 //PE4 輸入按鍵PREV
#define N_NEXT 0x20 //PE5 輸入按鍵NEXT
#define N_VOLr 0x40 //PE6 輸入按鍵VOL-
#define N_VOLp 0x80 //PE7 輸入按鍵VOL+
int size = 0;
int mode = 0;
unsigned char flag = 0;
unsigned char bflag = 0;
char mp3name[50];
void port_init(void){
// DDRB &= ~N_ST;
DDRB |= N_ST;
DDRE &= ~N_PREV;
DDRE &= ~N_NEXT;
DDRE &= ~N_VOLr;
DDRE &= ~N_VOLp;
PORTB = 0xFF;
}
int main(void)
{
unsigned char test = 0;
unsigned char status = 0;
unsigned char ret = 0;
unsigned int i,c;
port_init();
mp3_port_init();
/* while(PORT_ST)
bflag = 1;
delay_nms(200);
while(1)
{
if(!PORT_ST)
break;
}
bflag = 1;
*/
vs1003_init();
SPCR = 0x50; //提速
SPSR = 0x01; //setup SPI
CH375_PORT_INIT( );
xWriteCH375Cmd(CMD_RESET_ALL);
delay_nms(40);
xWriteCH375Cmd(CMD_CHECK_EXIST);
xWriteCH375Data(0x01);
test = xReadCH375Data();
xWriteCH375Cmd(CMD_SET_USB_MODE);
xWriteCH375Data(0x06);
status = xReadCH375Data();
while(CH375_INT_WIR);
xWriteCH375Cmd(CMD_GET_STATUS);
status = xReadCH375Data();
if(status == USB_INT_CONNECT)
delay_nms(250);
status = CH375LibInit();
while(1)
{
if(CH375DiskReady() == ERR_SUCCESS)break;
}
ret = CH375DiskSize();
size =(unsigned int)( mCmdParam.DiskSize.mDiskSizeSec >> 11 ) ;
while(1)
{
for ( c = 0; c < 255; c ++ )
{ /* 最多搜索前255個文件 */
strcpy( mCmdParam.Open.mPathName,"\\*" ); /* 搜索根目錄下文件名*/
i = strlen( (char *)mCmdParam.Open.mPathName ); /* 計算文件名長度,以處理文件名結束符 */
mCmdParam.Open.mPathName[ i ] =0xFF; /* 將結束符替換為255說明序號在變量中 */
CH375vFileSize=c; /*指定搜索的序號,幾乎沒有上限*/
i = CH375FileEnumer( ); /* 文件名中含有通配符*,則為搜索文件而不打開 */
if ( i == ERR_MISS_FILE ) break; /* 再也搜索不到匹配的文件,已經沒有匹配的文件名 */
if ( i != ERR_SUCCESS ) break; /* 搜索到與通配符相匹配的文件名,文件名及其完整路徑在命令緩沖區中 */
if(CH375vFileSize!=0xFFFFFFFF) /*枚舉到MP3文件*/
{
//else LCD_write_english_string(0,5,"this is mp3file" );
//bflag = PORT_ST;
//delay_nms(1);
strcpy( mp3name,(char *)mCmdParam.Open.mPathName );
mp3_play( (char *)mCmdParam.Open.mPathName );
}
//else LCD_write_english_string(0,5,"directory" );
}
}
return 0;
}
void mp3_play(char *s)
{
uint i;uchar t0,data,t1,t2;UINT16 data_pointer;
/* 播放MP3 */
strcpy( (char *)mCmdParam.Open.mPathName, s);
strcpy( mp3name,s );
/* 打開文件 */
i=CH375FileOpen( );
//查詢當前文件的信息
CH375FileQuery( );
//LCD_write_english_string(0,1,"SongSize" );
data=(unsigned char)(CH375vFileSize/102400);
t1=data/10;
//LCD_set_XY(56,1);
//LCD_write_char(t1+48);
//LCD_write_english_string(64,1,"." );
//LCD_set_XY(68,1);
t2=data%10;
//LCD_write_char(t2+48);
//LCD_write_english_string(76,1,"M" );
//顯示開始播放
//LCD_write_english_string(0,2,"Playing" );
while( 1 )
{
mCmdParam.Read.mSectorCount =1; // 指定讀取的扇區數
if(flag==0) CH375FileRead(); //讀完后文件指針自動后移
//處理數據
data_pointer=0;
while(data_pointer<512)
{
if(!PORT_ST)
{
/* delay_nms(200);
while(1)
{
bflag = 1;
if(!PORT_ST)
break;
}
bflag = 1;
delay_nms(200);*/
goto NEXT;
}
if(PINE&MP3_DATA_REQ) //加載數據
{
for(i=0;i<32;i++)
{
vs1003_data_write(FILE_DATA_BUF[data_pointer]);
data_pointer++;
}
}
if(data_pointer==511) break; //如果現在的數據不夠了,則跳出來
}
if(mCmdParam.Read.mSectorCount<1) break; // 實際讀出的扇區數較小則說明文件已經結束
}
NEXT: CH375FileClose( ); /* 關閉文件 */
}
void test_1003(void)
{
UINT16 data_pointer;UINT8 i;
while(1)
{
data_pointer=0;
while(data_pointer<4800)
{
if(PINE&MP3_DATA_REQ)
{
for(i=0;i<32;i++)
{
vs1003_data_write(vsBeepMP3[data_pointer]);
data_pointer++;
}
if(data_pointer==4799) break; //如果現在的數據不夠了,則跳出來
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -