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

📄 dec_main.c

📁 THIS GOOD CODE MP3,MP4
💻 C
📖 第 1 页 / 共 3 页
字号:
	write_XDATA(DECODER_R2R_VOLUME, 0x7f);

	Decoder_Encoder_Stop();
	Mp3_Mute_On();
	Mp3_Reset();
}


#if 0//External Audio codec
void Play_MP3_Beep(UINT8 beep_mode)
{
	xdata UINT8 beep_cnt;
	xdata LongChar bAddr;
//	xdata UINT16 col_back;
	xdata UINT16 column;
	xdata LongChar Addr;
	xdata UINT8 *DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata *)(BUFFER0+0x10000));

	Mp3_Reset();

//	EQ_set(0x10,0x10,0x10);

//Add Up register in NX5858
//------------------------------------------------------------------------
	write_XDATA(SYS_PIN_CONTROL,0x10);//0xFF05 I2S Mode Enable
	write_XDATA(AUDIO_PLL_CONTROL, 0x00);//0xFF15
//------------------------------------------------------------------------

	write_XDATA(DECODER_L2L_VOLUME, 0x10);
	write_XDATA(DECODER_L2R_VOLUME, 0x7f);
	write_XDATA(DECODER_R2L_VOLUME, 0x7f);
	write_XDATA(DECODER_R2R_VOLUME, 0x10);

	Mp3_Mute_Off();//START provide MCLK

	write_XDATA(AUDIO_CODEC_INTERFACE_CONTROL, 0x2A);//0xFA10

	memcpy(&(DMA_SECTOR_BUFF0[0]), &(S128[0]), 2048);
	write_XDATA(B0_BSTATUS, BUFFER_FULL);//full


	MP3_Decoder_Start();

	Codec_DEC_Initial1();
	Codec_DEC_Initial2();

	setVolume(20);

	Codec_Reg_Set(WM_ADC_DAC_CONTROL, 0x80);


	EqulizerBand_Set();

	EQ_mode_set(eq_mode);//WM8750 EQ


	B0_Size(2048);

	if(beep_mode==1) bAddr.l = BEEP1_OFFSET << 2;
	else bAddr.l = BEEP2_OFFSET << 2; 

	for(beep_cnt=0; beep_cnt<5; ){

		if(read_XDATA(BSTATUS)&0x04) {
			Dma_B0_RAM2PERI_Close();
			Dma_B0_PERI2RAM_Close();
			column = (UINT16)(bAddr.c[3]&0x03) << 9;
			Addr.l = (bAddr.l)>>2;
			PDownFromFlash(DMA0, Addr, 512, column);
			DownFlashClose(DMA0);

			memcpy(&(DMA_SECTOR_BUFF0[0]), &(S128[0]), 2048);
			write_XDATA(B0_BSTATUS, BUFFER_FULL);//full

			Dma_B0_RAM2PERI_Open(DMA_MP3);
			beep_cnt++;
			bAddr.l++;
		}
	}

	uDelay(0xffff);

	setVolume(0);

	Flash_Ready();

	Dma_B0_PERI2RAM_Close();
	Dma_B0_RAM2PERI_Close();

	write_XDATA(DECODER_L2L_VOLUME, 0x7f);
	write_XDATA(DECODER_L2R_VOLUME, 0x7f);
	write_XDATA(DECODER_R2L_VOLUME, 0x7f);
	write_XDATA(DECODER_R2R_VOLUME, 0x7f);

	Mp3_Mute_On();

	Codec_Close();

	Decoder_Encoder_Stop();
	Mp3_Mute_Off();
	Mp3_Reset();
}
#endif

#endif

void timer0(void) interrupt 1
{
	idata UINT8 	hold_push_key;
	clock_count++;
	if(clock_count >= clk_coeff[System_Clock])
		clock_count = 0;
	else
		return;

	hold_push_key = key_proc();

#ifdef FADE_IN_FUNC
	if(fade_in){

		in_volume_value--;
		if(in_volume_value >= want_volume_value){
			if(FILE_INFO.HEADER.stereo)
				Vol_stereo_set(in_volume_value);
			else
				Vol_mono_set(in_volume_value);
			if(in_volume_value == 0)
				fade_in = 0;
		}else{
			fade_in = 0;
		}

	}

#endif

#ifdef MENU_ANIMATION
	if(ani_time_tick)	ani_time_tick--;
#endif

	if(check_10SEC_start){
		if(time10 == 0){
			check_10SEC_end = 1;
			check_10SEC_start = 0;
		}else
			time10--;
	}

	if(sub_mode_in_play == DEC_DEC){
		if(IMAGE_INFO.Info.bc.b0) {
			imagetime++;
			if(imagetime > SCROLL_SPEED[scroll_speed_idx]) {
				imagetime=0;
				IMAGE_INFO.Info.bc.b2=1;

			}
		}
		else{
			imagetime=0;
			IMAGE_INFO.Info.bc.b2 = 0;
		}
	}


	if(sub_mode_in_play == DEC_NAV){
		if(NAV_IMAGE_INFO.Info.bc.b0) {
			imagetime++;
			if(imagetime > SCROLL_SPEED[scroll_speed_idx]) {
				imagetime=0;
				NAV_IMAGE_INFO.Info.bc.b2=1;
			}

		}
		else{
			imagetime=0;
			NAV_IMAGE_INFO.Info.bc.b2 = 0;
		}
	}

	if(sub_mode_in_play == DEC_MENU) {
		if(MENU_IMAGE_INFO.Info.bc.b0) {
			imagetime++;
									
			if(imagetime > SCROLL_SPEED[scroll_speed_idx]) {
				imagetime=0;
				MENU_IMAGE_INFO.Info.bc.b2=1;
			}
		}
		else{
			imagetime=0;
			MENU_IMAGE_INFO.Info.bc.b2 = 0;
		}
	}


	if(check_eq_start) {
		eqtime++;
		if(eqtime > 10) {
			check_eq_end = 1;
			eqtime = 0;
		}
	}

	TH0 = clk_coeff2[System_Clock];
	TL0 = 0x00;

	TR0 = 1;	
}

#if 0
/*--------------------------------------------------------------------------------------------------------*/
void SCON_int (void) interrupt 4
{
 //  	TI = 0; RI = 0; /* Serial Int Clear */
}

//---------------------------------------------------------------
//  al Interrupt 1 
//---------------------------------------------------------------
void EX1_int (void) interrupt 2
{
}

//---------------------------------------------------------------
//  al Interrupt 0 
//---------------------------------------------------------------

void EX0_int(void) interrupt 0		// USB 傈价 牢磐反飘
{
}

void timer1(void) interrupt 3
{
}
#endif

void Variable_Initial(){

	init_key_mask = 0;

	if(sub_mode_in_play != DEC_PAUSE) {
		AB_REPEAT.start_cluster = 0;
		AB_REPEAT.end_cluster = 0;
		AB_REPEAT.mode = 0;
	}

#ifdef FADE_IN_FUNC
	fade_in = 0;
#endif

#ifdef BEEP_FUNC
	beep_count = 0;
#endif

	MENU_IMAGE_INFO.Info.byte = 0x00;

}

void key_init(void)
{
	KEY.byte = 	0x00;
	if(ff_rew_course != SEQ_FAST_REW && ff_rew_course != SEQ_FAST_NEXT){
		//when FAST function, hold key value to prevent short ff/rew.
		//when init key, skip two song. So. don't init.
		previous_key = KEY_NONE;
		current_key = KEY_NONE;
		btn_cnt = 0;
	}
}

void System_Initial(void)
{
//=====================================================================
//	BLOCK RESET CONTROL
//	1 = Disable, 0 = Reset
//	RESET VALUE	: 0xFF
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |  JPG  |  ECC  |  ADC  |  USB  |  EXT	|  DRM  |  MMC  |  IDE  |
//RESET |   X   |   X   |   1   |   1   |   1   |   1   |   1   |   1   |
//	     ---------------------------------------------------------------
//=====================================================================

//	write_XDATA(SYS_BLOCK_RESET_CONTROL, 0x00);	//
//=====================================================================
//	BLOCK RESET CONTROL
//	1 = Disable, 0 = Reset
//	RESET VALUE	: 0x01
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |    	|    	|    	|    	|  		|    	|  SDR  |  RISC |
//RESET |   X   |   X   |   X   |   X   |   X   |   X   |   1   |   1   |
//	     ---------------------------------------------------------------
//=====================================================================

//	write_XDATA(SYS_RESET_CONTROL1, 0x00);	//
//=====================================================================
//	RESET CONTROL1
//	1 = Disable, 0 = Reset
//	RESET VALUE	: 0x01
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |  PWM  |  HPI  | USB20 |  SPI  |  I2C	|  COP  |  DMA  |  XCH  |
//RESET |   1   |   1   |   1   |   1   |   1   |   1   |   1   |   1   |
//	     ---------------------------------------------------------------
//=====================================================================

//	write_XDATA(SYSTEMBLOCK_PWDN, 0x40);		//[6] : rtc block power on => 1
	write_XDATA(SYSTEMBLOCK_PWDN, 0xD6);		//[6] : rtc block power on => 1
//=====================================================================
//	SYSTEM BLOCK POWER CONTROL 
//	1 = Enable(Cut Off), 0 = Disable(Supply)
//	RESET VALUE	: 0x00
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |  SPD  |  RTC  |  ADC	|  USB  |  EXT	|  DRM  |  MMC  |  IDE  |
//RESET |   1   |   1   |   1   |   1   |   0   |   1   |   1   |   0   |
//	     ---------------------------------------------------------------
//=====================================================================

	write_XDATA(SYS_DIVIDE_PWDN, 0x04);
//=====================================================================
//	DIVIDER POWER DOWN CONTROL 
//	1 = Enable(Cut Off), 0 = Disable(Supply)
//	RESET VALUE	: 0x07
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |    	|  	 	|  		|    	|  		| USB20 |  MP3  |  AUD  |
//RESET |   X   |   X   |   X   |   X   |   X   |   0   |   0   |   0   |
//	     ---------------------------------------------------------------
//=====================================================================

//#ifdef CLASS_D_AMP
//	write_XDATA(SYS_BLOCK_PWDN1, 0x7D);
//#else
//	write_XDATA(SYS_BLOCK_PWDN1, 0xFD);
//#endif
//=====================================================================
//	SYSTEM BLOCK1 POWER CONTROL 
//	1 = Enable(Cut Off), 0 = Disable(Supply)
//	RESET VALUE	: 0x00
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |  PWM  |  HPI  | USB20 |  SPI  |  I2C	|  COP  |  ECC  |  JPG  |
//RESET |   1   |   1   |   1   |   1   |   1   |   1   |   0   |   1   |
//	     ---------------------------------------------------------------
//=====================================================================

	write_XDATA(XTL_CLOCK_PWDN, 0x00);
//=====================================================================
//	XTL_CLOCK_PWDN POWER CONTROL 
//	1 = Enable(Cut Off), 0 = Disable(Supply)
//	RESET VALUE	: 0x0F
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |   	|    	|  		|    	|  ADC	|  TIME |  PWM  |  PIN  |
//RESET |   X   |   X   |   X   |   X   |   1   |   1   |   1   |   1   |
//	     ---------------------------------------------------------------
//=====================================================================


	write_XDATA(MP3BLOCK_PWDN, 0x05);
//=====================================================================
//	MP3 BLOCK POWER CONTROL 
//	1 = Enable(Cut Off), 0 = Disable(Supply)
//	RESET VALUE	: 0x00
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |       |       |  		|  COM1 |  COM2 |  MP3E |  MP3D |  WMA  |
//RESET |   X   |   X   |   X   |   0   |   0   |   1   |   0   |   1   |
//	     ---------------------------------------------------------------
//=====================================================================


	write_XDATA(DYNAMIC_PWDN, 0xFF);
//=====================================================================
//	DYNAMIC POWER CONTROL(Control Register for Power Saving)
//	1 = Enable, 0 = Disable
//	RESET VALUE	: 0x00
//	    (MSB)							(LSB)
//	        D7  	D6  	D5  	D4  |	D3  	D2  	D1  	D0
//	     --------------------------------------------------------------
//BLOCK |  COP  |  MP3  |  SYS  |  DMA  |  EXT  |  DRM  |  MMC  |  IDE  |
//RESET |   X   |   0   |   0   |   0   |   0   |   0   |   0   |   0   |
//	     ---------------------------------------------------------------
//=====================================================================

⌨️ 快捷键说明

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