⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 play.i

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 I
📖 第 1 页 / 共 4 页
字号:
 unsigned char mCSW_Status;
 unsigned char mReserved;
		} mCSW;
	} BOC;
} CMD_PARAM;

typedef CMD_PARAM CMD_PARAM_I;
typedef CMD_PARAM *P_CMD_PARAM;

























extern UINT8V	CH375IntStatus;
extern UINT8V	CH375DiskStatus;
extern unsigned char CH375LibConfig;








#line 549 "E:\MP3程序\Play/../Ch375b/CH375HFB.H"
extern unsigned char CH375vDiskFat;
extern unsigned char CH375vSecPerClus;
extern UINT32	CH375vStartCluster;
extern UINT32	CH375vFileSize;
extern UINT32	CH375vCurrentOffset;







































#line 595 "E:\MP3程序\Play/../Ch375b/CH375HFB.H"
extern unsigned char CH375GetVer( void );
extern void		CH375Reset( void );
extern unsigned char CH375Init( void );
extern void		CH375DirtyBuffer( void );
extern unsigned char CH375FileOpen( void );
extern unsigned char CH375FileEnumer( void );
extern unsigned char CH375FileClose( void );
extern unsigned char CH375FileQuery( void );
extern unsigned char CH375FileModify( void );
extern unsigned char CH375FileLocate( void );
extern unsigned char CH375FileReadX( void );

extern unsigned char CH375FileErase( void );
extern unsigned char CH375FileCreate( void );
extern unsigned char CH375FileWriteX( void );
extern unsigned char CH375DiskSize( void );
extern unsigned char CH375DiskQuery( void );


extern unsigned char CH375ByteLocate( void );
extern unsigned char CH375ByteRead( void );

extern unsigned char CH375ByteWrite( void );


extern unsigned char CH375BulkOnlyCmd( void );
extern unsigned char CH375DiskReady( void );
extern unsigned char CH375DiskConnect( void );


#line 630 "E:\MP3程序\Play/../Ch375b/CH375HFB.H"
















void xWriteCH375Cmd(unsigned char mCmd );
void xWriteCH375Data(unsigned char mData );
 unsigned char xReadCH375Data( void );

CMD_PARAM_I mCmdParam;

 unsigned char  DISK_BASE_BUF[512];




















void xQueryInterrupt( void )
{
	while (((*(volatile unsigned char *)0x30) & 0x02 ) );
	xWriteCH375Cmd(0x22 );
	CH375IntStatus = xReadCH375Data( );
	if ( CH375IntStatus == 0x16 ) CH375DiskStatus = 0x01;
	else if ( CH375IntStatus == 0x15 ) CH375DiskStatus = 0x02;
}
























































void xWriteToExtBuf(unsigned char mLength )
{
	mLength --;
}

void xReadFromExtBuf(unsigned char mLength )
{
	mLength --;
}



 unsigned char CH375LibInit( void )
{
	CH375LibConfig =( (0 << 7 ) | (0 << 5 ) | (0 << 4 ) | (1 << 2 ) | 1 );
	DISK_BASE_BUF[0] = 0;
	if ( CH375GetVer( ) < 0x29 ) return( 0xFF );
	return( CH375Init( ) );
}








#line 42 "Play.c"
void mp3_pause(void)
{
while(1);
}
void	mDelaymS( UINT32 ms )
{
	UINT16	i;
	while ( ms -- ) for ( i = 2600; i != 0; i -- );
}



void test_vs1003()
  {
   UINT16 data_pointer;unsigned char i;
   Print_str("Test vs1003b... \r\n");
   while (1)
    {
	data_pointer=0;
    while(data_pointer<4800)
      {
		if(((*(volatile unsigned char *)0x30) & 0x01) != 0)
        {
{(*(volatile unsigned char *)0x32) &= ~ 0x04;};
        for(i=0;i<32;i++)
         {
		   spiSend(vsBeepMP3[data_pointer++]);
         }
{(*(volatile unsigned char *)0x32) |= 0x04;};
	     }
	 }
   }
 }
 void Init_usb(void)
{
 unsigned int i;unsigned char t0,data,t1,t2;
 unsigned int usbsize;
    Print_str("Now debug usb host....\r\n");
    CH375_PORT_INIT( );

    if(CH375LibInit()==0){Print_str("Ch375 init Ok!\r\n");}
      else Print_str("Ch375 init Error!\r\n");

    while ( CH375DiskStatus != 0x02 ) xQueryInterrupt( );
    mDelaymS( 200 );

    Print_str("Find usb\r\n");

    for ( i = 0; i < 5; i ++ )
     {
     if ( CH375DiskReady( ) == 0x00 ) break;
	 }
    Print_str("Run here\r\n");


	Print_str("Usb = ");
	Print_size(CH375DiskSize());
	Print_str("M\r\n");
}


void	mStopIfError(unsigned char iError )
{
	if ( iError == 0x00 ) return;
	Print_str( "Error:=");
	Print_val(iError);
	while ( 1 );
}
void write_block(unsigned char *ps)
{
 unsigned int i;
	mCmdParam.WriteX.mSectorCount =1;
	mCmdParam.WriteX.mDataBuffer = ps;
	i = CH375FileWriteX();
}
void close_make_file(void)
{
 unsigned int i;
 	    mCmdParam.Close.mUpdateLen = 1;
		i = CH375FileClose( );
		mStopIfError( i );
}

void make_newfile(unsigned char *Filename)
{
 unsigned int i;
		Print_str( "Make New File\r\n" );
		strcpy((char *)mCmdParam.Create.mPathName, Filename);
		i = CH375FileCreate();
		mStopIfError( i );
		Print_str( "Make File Ok\r\n" );
}


void mp3_play(char *s)
{
 unsigned int i;
 unsigned char t0,data,t1,t2;
   UINT16 data_pointer;
 unsigned char *ps;

   show_clear();
   show_lcd(0, 0, 192, 2, &play_menu[0],0);
   show_play(s,3,0);

   strcpy( (char *)mCmdParam.Open.mPathName, s);

   CH375FileOpen( );

   while(data_pointer<2048)
   {
       while(((*(volatile unsigned char *)0x30) & 0x01) == 0);
       {{(*(volatile unsigned char *)0x32) &= ~ 0x04;};
           for(i=0;i<32;i++)
           {
               spiSend(0x00);
               data_pointer++;
           }
{(*(volatile unsigned char *)0x32) |= 0x04;};
           if(data_pointer == 2047)break;
       }
   }
   SoftReset();

 keybuf = 0;;
   while(1)
          {
		  if(keybuf == 5) break;
		  mCmdParam.ReadX.mDataBuffer = &mp3buf[0];
 		  mCmdParam.Read.mSectorCount =1;
  		  CH375FileReadX();
  		  ps = &mp3buf[0];
  		  data_pointer=0;
   		  while(data_pointer<512)
          		{
          		while(((*(volatile unsigned char *)0x30) & 0x01) == 0);
{(*(volatile unsigned char *)0x32) &= ~ 0x04;};
		  		for(i=0;i<32;i++)
		    	   {
             	   spiSend(*ps++);
  		     	   data_pointer++;
   	        	   }
{(*(volatile unsigned char *)0x32) |= 0x04;};
		 		if (data_pointer==512) break;
		 		}
  		  if(mCmdParam.Read.mSectorCount<1 ) break;
         }
  CH375FileClose( );
}





void RecordAdpcm1003(unsigned char *Filename)
{
 unsigned int ii=0;
 unsigned int w = 0, idx = 0;
  unsigned long int n;
  unsigned long int temp;

  make_newfile(Filename);
  record_init();
  for (idx=0; idx < sizeof(header); idx++)
   {
    mp3buf[idx] = header[idx];
   }




 keybuf = 0;;
n=0;
while (1)
	  {
	   do {
		   w = mp3ReadReg(0x09);
		  } while (w < 256 || w > 896);
	   while (idx < 512) {
		    		  	   w = mp3ReadReg(0x08);
						   while ((idx & 255) == sizeof(header)+2 && (w & 0xFF))
						    {
							 do {
							    w = mp3ReadReg(0x09);
								} while (w < 256);
							 w = mp3ReadReg(0x08);
							 }
						   mp3buf[idx++] = w>>8;
						   mp3buf[idx++] = w&0xFF;
                         }
      idx = 0;
	  write_block(&mp3buf[0]);
	  n += 1;
	  if(keybuf != 5){keybuf = 0;;continue;}
	  break;
	 }
     close_make_file();

	 strcpy( (char *)mCmdParam.Open.mPathName, Filename);
	 CH375FileOpen( );
	 mCmdParam.ReadX.mDataBuffer = &mp3buf[0];
 	 mCmdParam.Read.mSectorCount =1;
	 Print_str("读取文件第一个扇区\r\n");
	 mStopIfError(CH375FileReadX());
	 CH375FileClose( );




   n *= 2;
   temp = n*256+52;
   mp3buf[4] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[5] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[6] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[7] = (unsigned char)temp;

   temp = 8000;
   mp3buf[24] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[25] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[26] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[27] = (unsigned char)temp;
   temp = 8000*256;
   temp /= 505;
   mp3buf[28] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[29] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[30] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[31] = (unsigned char)temp;

   temp = n*505;
   mp3buf[48] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[49] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[50] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[51] = (unsigned char)temp;

   temp = n * 256;
   mp3buf[56] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[57] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[58] = (unsigned char)temp;
   temp >>= 8;
   mp3buf[59] = (unsigned char)temp;
   mCmdParam.WriteX.mSectorCount =1;
   mCmdParam.WriteX.mDataBuffer = &mp3buf[0];
   Print_str("新信息写入文件\r\n");
   mStopIfError(CH375FileWriteX());
   CH375FileClose( );
   Print_str("Record ok\r\n");
}

 unsigned char test_file(unsigned char *s)
{
 unsigned char ii;
 while(ii != 100){
  if(*s++ != '.'){ii++; continue;}
  if((*s == 'W')|(*s == 'w')) return 1;
  if((*s == 'M')|(*s == 'm')) return 1;
  return 0;
 }
 return 0;
}

#line 318 "Play.c"
void Play_audio(void)
{
 unsigned char c;
 unsigned int  i;

	for ( c = 0; c < 255; c ++ )
	 {
				strcpy( mCmdParam.Open.mPathName,"\\*" );
				i = strlen( (char *)mCmdParam.Open.mPathName );
				mCmdParam.Open.mPathName[ i ] =0xFF;
				CH375vFileSize=c;
				i = CH375FileEnumer( );
				if ( i == 0x42 ) break;
				if ( i != 0x00 ) break;
				if(test_file((char *)mCmdParam.Open.mPathName) != 0){
								if(CH375vFileSize!=0xFFFFFFFF)
								{
								 mp3_play((char *)mCmdParam.Open.mPathName);
							    }
				}
 	 }
}

#line 344 "Play.c"
void show_file_name(unsigned char point,unsigned char type)
{
 unsigned char ii;
  ii = 0;
  while(1){
            show_clear();
			show_lcd(0, 0, 192, 2, &tab[0],0);
			if(point > 0)
	        show_play(&filename[0][0],2,0);
			if(point > 1)
	 	    show_play(&filename[1][0],4,0);
			if(point > 2)
			show_play(&filename[2][0],6,0);
			switch(ii){
			 			   case 0: show_play(&filename[0][0],2,1);break;
						   case 1: show_play(&filename[1][0],4,1);break;
						   case 2: show_play(&filename[2][0],6,1);break;
			              }
 keybuf = 0;;
		    while(keybuf == 0);
			if(keybuf == 3) {
			                     if(--ii == 255) break;
			                   }
		    if(keybuf == 1){if(++ii == point){
			                                       if(point == 3) break;
												   ii = 0;
					  	 				 	      }
			                    }

			if(keybuf == 5)  break;
			if(keybuf == 4) {
 								   if(type == 0) mp3_play(&filename[ii][0]);
 								       else {strcpy(&Filename[0],&filename[ii][0]);
									   		 break;
											}
			                      }
         }
}

void Play_xuanzhe(unsigned char type)
{
 unsigned char point;
 unsigned char temp;
 unsigned char c;
 unsigned int  i;
	point = 0;

	for ( c = 0; c < 255; c ++ )
	 {
				strcpy( mCmdParam.Open.mPathName,"\\*" );
				i = strlen( (char *)mCmdParam.Open.mPathName );
				mCmdParam.Open.mPathName[ i ] =0xFF;
				CH375vFileSize=c;
				i = CH375FileEnumer( );
				if ( i == 0x42 ) break;
				if ( i != 0x00 ) break;
				if(test_file((char *)mCmdParam.Open.mPathName) != 0){
								if(CH375vFileSize!=0xFFFFFFFF)
								{
								 strcpy(&filename[point][0],(char *)mCmdParam.Open.mPathName);
								 point++;
								}
				                }
			    if(point != 3) continue;
				show_file_name(point,type);
				if(keybuf == 3) {c=0; point=0;keybuf = 0;;}
				if(type != 0){
						      if(keybuf == 4) return;
							  if(keybuf == 5) {Filename[0]= 0x00; return;}
				             }
				point = 0;

 	 }
    if((point != 0)&(point != 3)) 	{show_file_name(point, type);
			  	 		   	  		 if(type != 0){
						      		 		 	   if(keybuf == 4) return;
												   if(keybuf == 5) {Filename[0]= 0x00; return;}
				                                  }
								    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -