📄 aud_main.c
字号:
break;
case AUDIO_SUBWOOFER_MODE:
FetchMessage(AudioMessage,5,0);
DispBuff[26] = (SubwooferVol /10) + 48;
DispBuff[27] = (SubwooferVol%10) + 48;
break;
case AUDIO_BALANCE_MODE:
FetchMessage(AudioMessage,6,0);
if(BalanceVol>12)
{
DispBuff[25] = 'L';
DispBuff[26] = ((BalanceVol -12) /10) +48;
DispBuff[27] =((BalanceVol -12) %10) +48;
}
else
{
if(BalanceVol == 12)
{
DispBuff[25] = ' ';
DispBuff[26] = ' ';
DispBuff[27] = '0';
}
else
{
DispBuff[25] = 'R';
DispBuff[26] = ((12-BalanceVol) /10) +48;
DispBuff[27] =((12-BalanceVol) %10) +48;
}
}
break;
case AUDIO_FADER_MODE:
FetchMessage(AudioMessage,7,0);
if(FaderVol>12)
{
DispBuff[25] = 'L';
DispBuff[26] = ((FaderVol -12) /10) +48;
DispBuff[27] =((FaderVol -12) %10) +48;
}
else
{
if(FaderVol == 12)
{
DispBuff[25] = ' ';
DispBuff[26] = ' ';
DispBuff[27] = '0';
}
else
{
DispBuff[25] = 'R';
DispBuff[26] = ((12-FaderVol) /10) +48;
DispBuff[27] =((12-FaderVol) %10) +48;
}
}
break;
case AUDIO_VERSION_MODE:
DisplayVersion();
break;
}
LCDDisplay(BYBYTES_REFRESH,SECONDLINE,0,15);
}
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Audio_Proc
Input :
Output :
Description
- Special audio Procedure
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Audio_Proc()
{
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : SoftChange
Input :
Output :
Description
- Softstep function 1dB-step change for Volume, Bass, Treble
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void SoftChange()
{
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : AudioMute
Input : Type of mute::hard/soft; Soft mute time
Output :
Description
- Softstep function 1dB-step change for Volume, Bass, Treble
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void AudioMute(unsigned char type, unsigned char time)
{
switch(type)
{
case HARD_MUTE:
break;
case SOFT_MUTE:
Aud_MuteClock_19 &= 0xF2;
Aud_MuteClock_19 |= time;
WriteAudioRegister(AUDIO_AREA_MUTE);
break;
}
F_Mute = 1;
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : AudioUnMute
Input : Type of mute::hard/soft;
Output :
Description
- Softstep function 1dB-step change for Volume, Bass, Treble
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void AudioUnMute(unsigned char type)
{
switch(type)
{
case HARD_MUTE:
break;
case SOFT_MUTE:
Aud_MuteClock_19 |= 0x01;
WriteAudioRegister(AUDIO_AREA_MUTE);
break;
}
F_Mute = 0;
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : AudioDataConvertSend
Input : adjust items
Output :
Description
- Transfer the value to the real register settings
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void AudioDataConvertSend(unsigned char type)
{
switch(type)
{
case AUDIO_VOL:
NowVol = VolChangeTable[AudioVol];
BackUpVol = NowVol; // for mode select back up
Aud_Volume_19 &= 0x80;
Aud_Volume_19 |=VolTable[NowVol];
WriteAudioRegister(AUDIO_AREA_VOL);
break;
case AUDIO_BASS:
Aud_Bass_19 &= 0xE0;
Aud_Bass_19 |= BasMidTreTable[BassVol];
WriteAudioRegister(AUDIO_AREA_BASS);
break;
case AUDIO_TREBLE:
Aud_Treble_19 &= 0xE0;
Aud_Treble_19 |= BasMidTreTable[TrebleVol];
WriteAudioRegister(AUDIO_AREA_TRE);
break;
case AUDIO_MIDDLE:
Aud_Middle_19 &= 0xE0;
Aud_Middle_19 |= BasMidTreTable[MiddleVol];
WriteAudioRegister(AUDIO_AREA_MID);
break;
case AUDIO_BALANCE:
CalcBalance();
WriteAudioRegister(AUDIO_AREA_SPEAKER);
break;
case AUDIO_FADER:
CalcFader();
WriteAudioRegister(AUDIO_AREA_SPEAKER);
break;
case AUDIO_SUBWOOFER:
Aud_Subwoofer_19 &= 0x80;
Aud_Subwoofer_19 |= SubwTable[SubwooferVol];
WriteAudioRegister(AUDIO_AREA_SUBW);
break;
case AUDIO_LOUD:
break;
case AUDIO_SOURCE:
Aud_Inp &= 0xF8;
Aud_Inp |= SourceTable[AudioSource];
WriteAudioRegister(AUDIO_AREA_FSOURCE);
break;
case AUDIO_ALL:
NowVol = VolChangeTable[AudioVol];
BackUpVol = NowVol;
Aud_Volume_19 = (Aud_Volume_19&0x80)|VolTable[NowVol];
Aud_Inp = (Aud_Inp&0xF8)|SourceTable[AudioSource];
Aud_Bass_19 = (Aud_Bass_19&0xE0)|BasMidTreTable[BassVol];
Aud_Treble_19 = (Aud_Treble_19&0xE0)|BasMidTreTable[TrebleVol];
Aud_Middle_19 = (Aud_Middle_19&0xE0)| BasMidTreTable[MiddleVol];
Aud_Subwoofer_19 = (Aud_Subwoofer_19&0x80)|SubwTable[SubwooferVol];
CalcBalance();
CalcFader();
WriteAudioRegister(AUDIO_AREA_ALL);
break;
}
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : CalcBalance
Input :
Output :
Description
- calculate the balance level
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void CalcBalance(void)
{
unsigned char lf, lr, rf, rr;
if(BalanceVol > 12)
{
rr = BalanceVol - 12;
rf = BalanceVol - 12;
lr = 0;
lf = 0;
}
else
{
lr = 12- BalanceVol;
lf = 12- BalanceVol;
rr = 0;
rf = 0;
}
Aud_SpeakerLF_19 = BalFadTable[lf];
Aud_SpeakerLR_19 = BalFadTable[lr];
Aud_SpeakerRF_19 = BalFadTable[rf];
Aud_SpeakerRR_19 = BalFadTable[rr];
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : CalcFader
Input :
Output :
Description
- calculate the fader
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void CalcFader(void)
{
unsigned char lf, lr, rf, rr;
if(FaderVol> 12)
{
lr = FaderVol - 12;
rr = FaderVol - 12;
lf = 0;
rf = 0;
}
else
{
lf = 12- FaderVol;
rf = 12- FaderVol;
lr = 0;
rr = 0;
}
Aud_SpeakerLF_19 = BalFadTable[lf];
Aud_SpeakerLR_19 = BalFadTable[lr];
Aud_SpeakerRF_19 = BalFadTable[rf];
Aud_SpeakerRR_19 = BalFadTable[rr];
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : WriteAudioRegister
Input :
Output :
Description
- write the audio register by IIC bus
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void WriteAudioRegister(unsigned char start, unsigned char end)
{
unsigned char i;
I2Cm_Start();
I2Cm_TxData(TDA7419_ADR);
if(start==end)
I2Cm_TxData(start);
else
I2Cm_TxData(start+AUDIO_AUTO_INC);
for (i=start;i<=end; i++)
I2Cm_TxData(I2c_AudBuff[i]);
I2Cm_Stop();
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Audio_10msTimer
Input :
Output :
Description
- audio delay time by IIC bus (10ms)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Audio_10msTimer()
{
if(AudioMuteTimer!=0) AudioMuteTimer--;
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Routine : Audio_100msTimer
Input :
Output :
Description
- audio delay time by IIC bus (100ms)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void Audio_100msTimer()
{
if(AudioDispTimer!=0) AudioDispTimer--;
if(HalfSecondTimer == 0)
{
HalfSecondTimer = 5;
if(F_HALFSECOND ==1) F_HALFSECOND =0;
else F_HALFSECOND = 1;
}
else HalfSecondTimer --;
}
/*********************************************
Function: MaxMinChangeProtect
Description: Change the value of variable
Write/Modify: Perry.Liang
Time: 2004-8-9- 16:32:10
*********************************************/
unsigned char MaxMinChangeProtect(unsigned char Num,signed char ChangeVal,unsigned char MaxVal,unsigned char MinVal,unsigned char ProtectState)
{
signed char TestVal;
TestVal=Num+ChangeVal;
if(TestVal>=(signed char)MinVal && TestVal<=(signed char)MaxVal)
Num+=ChangeVal;
else if (TestVal<(signed char)MinVal )
{
if(ProtectState==0)
Num=MaxVal;
else
Num=MinVal;
}
else
{
if(ProtectState==0)
Num=MinVal;
else
Num=MaxVal;
}
return(Num);
}
/*** (c) 2005 STMicroelectronics ****************** END OF FILE ***/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -