📄 audio.lst
字号:
C51 COMPILER V7.50 AUDIO 04/01/2008 15:02:00 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AUDIO
OBJECT MODULE PLACED IN .\Output\audio.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE audio.c COMPACT OPTIMIZE(9,SIZE) BROWSE MODDP2 INCDIR(.\Include\) DEFINE(IN
-TERNAL_MCU) DEBUG OBJECTEXTEND PRINT(.\Source\audio.lst) OBJECT(.\Output\audio.obj)
line level source
1 //============ Audio ====================================================
2
3 #include "Config.h"
4
5 #include "reg.h"
6 #include "typedefs.h"
7 #include "i2c.h"
8 #include "main.h"
9 #include "dispinfo.h"
10 #include "osdmenu.h"
11 #include "printf.h"
12 #include "tw88.h"
13 #include "etc_eep.h"
14 #include "audio.h"
15
16 #ifdef SUPPORT_MSP_AUDIO
static IDATA BYTE AudioVol = 50,
AudioBalance = 50,
AudioBass = 50,
AudioTreble = 46;
//AudioEffect = 0;
#else
23 static IDATA BYTE AudioVol = 50;
24 #endif
25 bit TVTunerAudioActive=0;
26 static bit AudioMuteOn=0;
27
28 extern CODE struct RegisterInfo UserRange;
29
30 #ifdef SUPPORT_MSP_AUDIO
CODE struct RegisterInfo MSPVolRange= {0x50, 0x7d,0x66};
CODE struct RegisterInfo MSPBalanceRange= {-127, 127, 0};
CODE struct RegisterInfo MSPBassRange= { -12, 12, 0};
CODE struct RegisterInfo MSPTrebleRange= { -12, 15, 2};
#else
36 CODE struct RegisterInfo MSPVolRange= {0x10, 0xe0,0x80};
37 #endif
38
39 BYTE ResetMSP(void)
40 {
41 1 #ifdef SUPPORT_MSP_AUDIO
BYTE mspdata[3];
#ifdef DEBUG_AUDIO
dPrintf("\r\n++(ResetMSP)\r\nTVVol:%d", (WORD)AudioVol);
#endif
AudioVol = GetAudioVolEE();
AudioBalance = GetAudioBalanceEE();
AudioBass = GetAudioBassEE();
AudioTreble = GetAudioTrebleEE();
//AudioEffect = GetAudioEffectEE();
mspdata[0] = 0;
C51 COMPILER V7.50 AUDIO 04/01/2008 15:02:00 PAGE 2
mspdata[1] = 0x80;
mspdata[2] = 0;
WriteI2Cn_(MSPI2CAddress, mspdata, 3);
mspdata[0] = 0;
mspdata[1] = 0;
mspdata[2] = 0;
WriteI2Cn_(MSPI2CAddress, mspdata, 3);
#ifdef DEBUG_AUDIO
dPuts("\r\n__(ResetMSP)");
#endif
return 0;
#else
69 1 AudioVol = GetAudioVolEE();
70 1
71 1 return 0;
72 1 #endif
73 1 }
74
75 void SetMSPVol(void)
76 {
77 1 #ifdef SUPPORT_MSP_AUDIO
BYTE voldata[5];
int vol;
Mapping1( AudioVol, &UserRange, &vol, &MSPVolRange );
voldata[0] = 0x12;
voldata[1] = 0;
voldata[2] = 0;
voldata[3] = (BYTE)vol;
voldata[4] = 0;
WriteI2Cn_(MSPI2CAddress, voldata, 5); //LJY010202
#ifdef DEBUG_AUDIO
dPrintf("\r\n++(SetMSPVol)MSPVol:0x%x, AudioVol:%d__", (WORD)vol, (WORD)AudioVol);
#endif
#else
94 1 int vol;
95 1
96 1 Mapping1( AudioVol, &UserRange, &vol, &MSPVolRange );
97 1
98 1 #ifndef BACKLIGHT_CCFL
WriteTW88(0xff, 0x01); // page 1
WriteTW88(0x33, vol); // FPPWM
WriteTW88(0xff, 0x00); // page 0
#endif
103 1
104 1 if (P2_3)
105 1 P2_3 = FALSE; // Mute Pin of TDA7496
106 1 #endif
107 1 }
108
109 #ifdef SUPPORT_MSP_AUDIO
void SetMSPBalance(void)
{
BYTE valdata[5];
int val;
Mapping1( AudioBalance, &UserRange, &val, &MSPBalanceRange );
C51 COMPILER V7.50 AUDIO 04/01/2008 15:02:00 PAGE 3
valdata[0] = 0x12;
valdata[1] = 0;
valdata[2] = 1;
valdata[3] = (BYTE)val;
valdata[4] = 0;
WriteI2Cn_(MSPI2CAddress, valdata, 5);
#ifdef DEBUG_AUDIO
dPrintf("\r\n++(SetMSPBalance)MSPBal:0x%x, AudioBalance:%d__", (WORD)val, (WORD)AudioBalance);
#endif
}
void SetMSPBass(void)
{
BYTE valdata[5];
int val;
Mapping1( AudioBass, &UserRange, &val, &MSPBassRange );
valdata[0] = 0x12;
valdata[1] = 0;
valdata[2] = 2;
valdata[3] = (BYTE)val;
valdata[4] = 0;
WriteI2Cn_(MSPI2CAddress, valdata, 5);
#ifdef DEBUG_AUDIO
dPrintf("\r\n++(SetMSPBass)MSPBass:0x%x, AudioBass:%d__", (WORD)val, (WORD)AudioBass);
#endif
}
void SetMSPTreble(void)
{
BYTE valdata[5];
int val;
Mapping1( AudioTreble, &UserRange, &val, &MSPTrebleRange );
valdata[0] = 0x12;
valdata[1] = 0;
valdata[2] = 3;
valdata[3] = (BYTE)val;
valdata[4] = 0;
WriteI2Cn_(MSPI2CAddress, valdata, 5);
#ifdef DEBUG_AUDIO
dPrintf("\r\n++(SetMSPTreble)MSPTreble:0x%x, AudioTreble:%d__", (WORD)val, (WORD)AudioTreble);
#endif
}
#endif
167
168 void AudioOff(void)
169 {
170 1 #ifdef SUPPORT_MSP_AUDIO
BYTE mspdata[5];
#ifdef DEBUG_AUDIO
dPuts("\r\n++(AudioOff)--");
#endif
mspdata[0] = 0x12;
mspdata[1] = 0x00;
C51 COMPILER V7.50 AUDIO 04/01/2008 15:02:00 PAGE 4
mspdata[2] = 0x00;
mspdata[3] = 0xff;
mspdata[4] = 0x00;
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
#else
184 1 P2_3 = TRUE; // Mute Pin of TDA7496
185 1 #endif
186 1 }
187
188 #define END_OF_LOOP 0xff
189
190 #ifdef SUPPORT_TV
191 BYTE AudioAutoStdDetection(void)
192 {
193 1 #ifdef SUPPORT_MSP_AUDIO
BYTE mspdata[5], loop=0;
WORD ret;
mspdata[0] = 0x10;
mspdata[1] = 0x00;
mspdata[2] = 0x20; // Standard selection
mspdata[3] = 0x00;
mspdata[4] = 0x01; // Auto Std Detection
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
do {
mspdata[0] = 0x00;
mspdata[1] = 0x7E;
I2CReadByteMSP(MSPI2CAddress, 0x11, mspdata, 2);
if( loop==END_OF_LOOP )
break;
loop++;
ret = mspdata[0];
ret = ( ret << 8 ) | mspdata[1];
} while( ret > 0x7ff );
#ifdef DEBUG_AUDIO
dPrintf("\r\n(AudioAutoStdDetection)Auto Detection:0x%x", (WORD)ret );
#endif
if( loop==END_OF_LOOP ) ret = 0;
return ret;
#else
221 1 return 0;
222 1 #endif
223 1 }
224 #endif
225
226
227 void ExtAudio(void)
228 {
229 1 #ifdef SUPPORT_MSP_AUDIO
BYTE mspdata[5], loop=0;
WORD ret;
AudioOff();
mspdata[0] = 0x10;
mspdata[1] = 0x00;
mspdata[2] = 0x30; // MODUS register: Automatic-on
mspdata[3] = 0x20;
mspdata[4] = 0x03;
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
C51 COMPILER V7.50 AUDIO 04/01/2008 15:02:00 PAGE 5
mspdata[0] = 0x12;
mspdata[1] = 0x00;
mspdata[2] = 0x13; // SCART switch
mspdata[3] = 0x00;
mspdata[4] = 0x00;
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
mspdata[0] = 0x12;
mspdata[1] = 0x00;
mspdata[2] = 0x08; // source select
mspdata[3] = 0x02; // SCART input
mspdata[4] = 0x20; // stereo(transparent)
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
mspdata[0] = 0x12;
mspdata[1] = 0x00;
mspdata[2] = 0x0d; // SCART input prescale
mspdata[3] = 0x50;
mspdata[4] = 0x00;
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
ret = AudioAutoStdDetection();
#ifdef DEBUG_AUDIO
if( !ret ) {
dPuts("\r\n--Fail to Audio AutoDetect");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -