?? audio.lst
字號:
C51 COMPILER V7.50 AUDIO 08/20/2007 10:23:29 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AUDIO
OBJECT MODULE PLACED IN audio.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE audio.c COMPACT OPTIMIZE(9,SIZE)
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 "tuner.h"
12 #include "eds.h"
13 #include "cc.h"
14 #include "debug.h"
15 #include "printf.h"
16 #include "tw88.h"
17 #include "etc_eep.h"
18 #include "audio.h"
19
20 static IDATA BYTE AudioVol = 50,
21 AudioBalance = 50,
22 AudioBass = 50,
23 AudioTreble = 46;
24 //AudioEffect = 0;
25 bit TVTunerAudioActive=0;
26 static bit AudioMuteOn=0;
27
28 extern CODE struct RegisterInfo UserRange;
29
30 CODE struct RegisterInfo MSPVolRange= {0x50, 0x7d,0x66};
31 CODE struct RegisterInfo MSPBalanceRange= {-127, 127, 0};
32 CODE struct RegisterInfo MSPBassRange= { -12, 12, 0};
33 CODE struct RegisterInfo MSPTrebleRange= { -12, 15, 2};
34
35 BYTE ResetMSP(void)
36 {
37 1 BYTE mspdata[3];
38 1
39 1 #ifdef DEBUG_AUDIO
Printf("\r\n++(ResetMSP)\r\nTVVol:%d", (WORD)AudioVol);
#endif
42 1
43 1 AudioVol = GetAudioVolEE();
44 1 AudioBalance = GetAudioBalanceEE();
45 1 AudioBass = GetAudioBassEE();
46 1 AudioTreble = GetAudioTrebleEE();
47 1 //AudioEffect = GetAudioEffectEE();
48 1
49 1 mspdata[0] = 0;
50 1 mspdata[1] = 0x80;
51 1 mspdata[2] = 0;
52 1 WriteI2Cn_(MSPI2CAddress, mspdata, 3);
53 1
54 1 mspdata[0] = 0;
55 1 mspdata[1] = 0;
C51 COMPILER V7.50 AUDIO 08/20/2007 10:23:29 PAGE 2
56 1 mspdata[2] = 0;
57 1 WriteI2Cn_(MSPI2CAddress, mspdata, 3);
58 1
59 1 #ifdef DEBUG_AUDIO
Puts("\r\n__(ResetMSP)");
#endif
62 1 return 0;
63 1 }
64
65 void SetMSPVol(void)
66 {
67 1 BYTE voldata[5];
68 1 int vol;
69 1
70 1 Mapping1( AudioVol, &UserRange, &vol, &MSPVolRange );
71 1
72 1 voldata[0] = 0x12;
73 1 voldata[1] = 0;
74 1 voldata[2] = 0;
75 1 voldata[3] = (BYTE)vol;
76 1 voldata[4] = 0;
77 1 WriteI2Cn_(MSPI2CAddress, voldata, 5); //LJY010202
78 1
79 1 #ifdef DEBUG_AUDIO
dPrintf("\r\n++(SetMSPVol)MSPVol:0x%x, AudioVol:%d__", (WORD)vol, (WORD)AudioVol);
#endif
82 1 }
83
84 void SetMSPBalance(void)
85 {
86 1 BYTE valdata[5];
87 1 int val;
88 1
89 1 Mapping1( AudioBalance, &UserRange, &val, &MSPBalanceRange );
90 1
91 1 valdata[0] = 0x12;
92 1 valdata[1] = 0;
93 1 valdata[2] = 1;
94 1 valdata[3] = (BYTE)val;
95 1 valdata[4] = 0;
96 1 WriteI2Cn_(MSPI2CAddress, valdata, 5);
97 1
98 1 #ifdef DEBUG_AUDIO
dPrintf("\r\n++(SetMSPBalance)MSPBal:0x%x, AudioBalance:%d__", (WORD)val, (WORD)AudioBalance);
#endif
101 1 }
102
103 void SetMSPBass(void)
104 {
105 1 BYTE valdata[5];
106 1 int val;
107 1
108 1 Mapping1( AudioBass, &UserRange, &val, &MSPBassRange );
109 1
110 1 valdata[0] = 0x12;
111 1 valdata[1] = 0;
112 1 valdata[2] = 2;
113 1 valdata[3] = (BYTE)val;
114 1 valdata[4] = 0;
115 1 WriteI2Cn_(MSPI2CAddress, valdata, 5);
116 1
117 1 #ifdef DEBUG_AUDIO
C51 COMPILER V7.50 AUDIO 08/20/2007 10:23:29 PAGE 3
dPrintf("\r\n++(SetMSPBass)MSPBass:0x%x, AudioBass:%d__", (WORD)val, (WORD)AudioBass);
#endif
120 1 }
121
122 void SetMSPTreble(void)
123 {
124 1 BYTE valdata[5];
125 1 int val;
126 1
127 1 Mapping1( AudioTreble, &UserRange, &val, &MSPTrebleRange );
128 1
129 1 valdata[0] = 0x12;
130 1 valdata[1] = 0;
131 1 valdata[2] = 3;
132 1 valdata[3] = (BYTE)val;
133 1 valdata[4] = 0;
134 1 WriteI2Cn_(MSPI2CAddress, valdata, 5);
135 1
136 1 #ifdef DEBUG_AUDIO
dPrintf("\r\n++(SetMSPTreble)MSPTreble:0x%x, AudioTreble:%d__", (WORD)val, (WORD)AudioTreble);
#endif
139 1 }
140
141 void AudioOff(void)
142 {
143 1 BYTE mspdata[5];
144 1
145 1 #ifdef DEBUG_AUDIO
dPuts("\r\n++(AudioOff)--");
#endif
148 1
149 1 mspdata[0] = 0x12;
150 1 mspdata[1] = 0x00;
151 1 mspdata[2] = 0x00;
152 1 mspdata[3] = 0xff;
153 1 mspdata[4] = 0x00;
154 1 WriteI2Cn_(MSPI2CAddress, mspdata, 5);
155 1 }
156
157 #define END_OF_LOOP 0xff
158
159 BYTE AudioAutoStdDetection(void)
160 {
161 1 BYTE mspdata[5], loop=0;
162 1 WORD ret;
163 1
164 1 mspdata[0] = 0x10;
165 1 mspdata[1] = 0x00;
166 1 mspdata[2] = 0x20; // Standard selection
167 1 mspdata[3] = 0x00;
168 1 mspdata[4] = 0x01; // Auto Std Detection
169 1 WriteI2Cn_(MSPI2CAddress, mspdata, 5);
170 1 do {
171 2 mspdata[0] = 0x00;
172 2 mspdata[1] = 0x7E;
173 2 I2CReadByteMSP(MSPI2CAddress, 0x11, mspdata, 2);
174 2 if( loop==END_OF_LOOP )
175 2 break;
176 2 loop++;
177 2 ret = mspdata[0];
178 2 ret = ( ret << 8 ) | mspdata[1];
179 2 } while( ret > 0x7ff );
C51 COMPILER V7.50 AUDIO 08/20/2007 10:23:29 PAGE 4
180 1 #ifdef DEBUG_AUDIO
dPrintf("\r\n(AudioAutoStdDetection)Auto Detection:0x%x", (WORD)ret );
#endif
183 1
184 1 if( loop==END_OF_LOOP ) ret = 0;
185 1
186 1 return ret;
187 1 }
188
189
190 #ifdef SUPPORT_TV
BYTE SteroMonoDetection(void)
{
BYTE mspdata[5];
WORD ret;
mspdata[0] = 0x00;
mspdata[1] = 0x18;
I2CReadByteMSP(MSPI2CAddress, 0x11, mspdata, 2);
if(mspdata[0] > 0x10 ) ret=0; // Stereo
else ret = 1; // Mono
#ifdef DEBUG_AUDIO
Printf("\r\n(SteroMonoDetection)Auto Detection:0x%x", (WORD)mspdata[0] );
#endif
return ret;
}
BYTE TunerAudio(void)
{
BYTE mspdata[5], loop=0;
WORD ret;
#ifdef DEBUG_AUDIO
dPuts("\r\n++(TunerAudio)--");
#endif
AudioOff();
mspdata[0] = 0x10;
mspdata[1] = 0x00;
mspdata[2] = 0x30; // MODUS register: Automatic-on
mspdata[3] = 0x20;
mspdata[4] = 0x03;
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
mspdata[0] = 0x12;
mspdata[1] = 0x00;
mspdata[2] = 0x08; // source select
mspdata[3] = 0x03; // Ch or A
mspdata[4] = 0x20;
WriteI2Cn_(MSPI2CAddress, mspdata, 5); //LJY010202
mspdata[0] = 0x12;
mspdata[1] = 0x00;
mspdata[2] = 0x0e; // FM-AM prescale
mspdata[3] = 0x24;
mspdata[4] = 0x03;
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
mspdata[0] = 0x12;
C51 COMPILER V7.50 AUDIO 08/20/2007 10:23:29 PAGE 5
mspdata[1] = 0x00;
mspdata[2] = 0x10; // NICAM prescale
mspdata[3] = 0x5a;
mspdata[4] = 0x00;
WriteI2Cn_(MSPI2CAddress, mspdata, 5);
ret = AudioAutoStdDetection();
AudioOn(); //SetMSPVol();
if( !ret ) {
#ifdef DEBUG_AUDIO
Puts("\r\n--Fail to Audio AutoDetect");
#endif
TVTunerAudioActive = 0;
return FALSE;
}
TVTunerAudioActive = 1;
return TRUE;
}
#endif
264
265 void ExtAudio(void)
266 {
267 1 BYTE mspdata[5], loop=0;
268 1 WORD ret;
269 1
270 1 AudioOff();
271 1
272 1 mspdata[0] = 0x10;
273 1 mspdata[1] = 0x00;
274 1 mspdata[2] = 0x30; // MODUS register: Automatic-on
275 1 mspdata[3] = 0x20;
276 1 mspdata[4] = 0x03;
277 1 WriteI2Cn_(MSPI2CAddress, mspdata, 5);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -