📄 dec_main.c
字号:
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 + -