📄 pt2322s.lst
字号:
C51 COMPILER V8.05a PT2322S 10/22/2006 21:41:57 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE PT2322S
OBJECT MODULE PLACED IN PT2322S.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PT2322S.c OMF2 BROWSE DEBUG
line level source
1 #include "config.h"
2
3
4 #define IN_PT2322S
5
6 #define PT2322_I2CADDRESS 0x88 // PT2322的I2C的地址
7
8 // --------------------------------------------------------------------------------
9 // ------------ 主音量的控制 -----------------------------------------------------
10 unsigned char idata master_volume=0x00; //主音量的值
11 unsigned char idata pt2322_buffer[5]; //I2C发送的buffer,不包含子地址,一般为2个字节而已
12
13 /* ------------------------------------------------------------------
14 FUNCTION DEFINITION
15 MSB LSB
16 B7 B6 B5 B4 B3 B2 B1 B0 Function
17 0 0 0 0 x x x x No function
18 0 0 0 1 E3 E2 E1 E0 Front left channel volume TRIM control
19 0 0 1 0 E3 E2 E1 E0 Front right channel volume TRIM control
20 0 0 1 1 E3 E2 E1 E0 Center channel volume TRIM control
21 0 1 0 0 E3 E2 E1 E0 Rear left channel volume TRIM control
22 0 1 0 1 E3 E2 E1 E0 Rear right channel volume TRIM control
23 0 1 1 0 E3 E2 E1 E0 Subwoofer volume TRIM control
24 0 1 1 1 I1 I0 J1 J0 Function select
25 1 0 0 0 x x x x No function
26 1 0 0 1 G3 G2 G1 G0 Bass tone control
27 1 0 1 0 K3 K2 K1 K0 Middle tone control
28 1 0 1 1 H3 H2 H1 H0 Treble tone control
29 1 1 0 0 0 C2 C1 C0 Input SW
30 1 1 0 1 A3 A2 A1 A0 Master volume control (-1dB Step)
31 1 1 1 0 0 B2 B1 B0 Master volume control (-10dB Step)
32
33 FUNCTION SELECT BITS
34 I1=0 Mute Off I1=1 Mute On
35 I0=0 3D On I0=1 3D Off
36 J1=0 Tone Control ON J1=1 TONE Defeat
37 J0=0 No Function J0=1 No Function
38
39
40 MASTER VOLUME CONTROL BITS // 主音量的调节
41 A3 A2(B2) A1(B1) A0(B0) Attenuation (dB)
42 0 0 0 0 0 (0)
43 0 0 0 1 -1 (-10)
44 0 0 1 0 -2 (-20)
45 0 0 1 1 -3 (-30)
46 0 1 0 0 -4 (-40)
47 0 1 0 1 -5 (-50)
48 0 1 1 0 -6 (-60)
49 0 1 1 1 -7 (-70)
50 1 0 0 0 -8 (x)
51 1 0 0 1 -9 (x)
52 Note: A=-1dB/Step, B=-10dB/Step
53 TONE CONTROL BITS //音调的调节
54 G3/K3/H3 G2/K2/H2 G1/K1/H1 G0/K0/H0 Attenuation (dB)
55 0 0 0 0 -14
C51 COMPILER V8.05a PT2322S 10/22/2006 21:41:57 PAGE 2
56 0 0 0 1 -12
57 0 0 1 0 -10
58 0 0 1 1 -8
59 0 1 0 0 -6
60 0 1 0 1 -4
61 0 1 1 0 -2
62 0 1 1 1 0
63 1 0 0 0 +14
64 1 0 0 1 +12
65 1 0 1 0 +10
66 1 0 1 1 +8
67 1 1 0 0 +6
68 1 1 0 1 +4
69 1 1 1 0 +2
70 1 1 1 1 0
71 Note: G=Bass, K=Middle, H=Treble
72
73
74 CHANNEL TRIM VOLUME CONTROL BITS
75 E3 E2 E1 E0 Attenuation (dB)
76 0 0 0 0 0
77 0 0 0 1 -1
78 0 0 1 0 -2
79 0 0 1 1 -3
80 0 1 0 0 -4
81 0 1 0 1 -5
82 0 1 1 0 -6
83 0 1 1 1 -7
84 1 0 0 0 -8
85 1 0 0 1 -9
86 1 0 1 0 -10
87 1 0 1 1 -11
88 1 1 0 0 -12
89 1 1 0 1 -13
90 1 1 1 0 -14
91 1 1 1 1 -15
92
93
94 ------------------------------------------------------------------*/
95
96
97 // PT2322S的初始化程序
98 void pt2322s_initialize(void)
99 {
100 1
101 1 #if EEPROM_USING
eeprom_operatemode=0x01; //将要记忆的内容写入EEPROM
eeprom_process(); //取得音量值和音乐模式
#endif
105 1 pt2322_buffer[0]=0xff; //Clear Register
106 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // 关于mute功能的控制
107 1 pt2322_buffer[0]=0xc7; //开放6个通道
108 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // 开放6通道
109 1
110 1 mastervolume_control();
111 1 musicmode_control();
112 1
113 1 pt2322_mutecontrol(0x00);
114 1
115 1 }
116
117
C51 COMPILER V8.05a PT2322S 10/22/2006 21:41:57 PAGE 3
118 // ---音量0为最大, -79DB为最小
119 void mastervolume_control(void)
120 {unsigned char idata i=0x00;
121 1 if(master_volume>79)
122 1 master_volume=79; //不容许超过音量限制
123 1 pt2322_buffer[0]=0xe0+(master_volume/10);
124 1 pt2322_buffer[1]=0xd0+(master_volume%10);
125 1 //PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x02); //发送音量的控制
126 1 if(PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x02)==0x00) //; // 发送音量的控制
127 1 {//rs232_senddata(0x86);
128 2 //rs232_senddata(0x01);
129 2 }
130 1 else
131 1 {//rs232_senddata(0x86);
132 2 //rs232_senddata(0x02);
133 2 }
134 1
135 1
136 1 }
137
138 // --------------------------------------------------------------------------------
139 // ----模式的选择,通过TRIM的控制,以及3D效果的控制来实现
140
141 unsigned char idata music_mode=0x00; //PT2322的音响效果模式
142 unsigned char idata function_mode=0x00; //PT2322的模式选择
143 #define MAX_MUSIC_MODE 0x04
144 unsigned char code pt2322_trim_code[MAX_MUSIC_MODE][7]=
145 {// Front left, Front right,Center,Rear left,Rear right,Subwoofer,3D ON/OFF
146 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, // mode 0
147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // mode 1
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, // mode 2
149 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // mode 3
150 };
151
152
153 void musicmode_control(void)
154 {
155 1
156 1 pt2322_mutecontrol(0x00);
157 1 if(music_mode >= MAX_MUSIC_MODE)
158 1 music_mode = 0x00;
159 1 if(music_mode==0x00)
160 1 {LED1=0x00;LED2=0x01;LED3=0x01;LED4=0x01;}
161 1 else if(music_mode==0x01)
162 1 {LED1=0x01;LED2=0x00;LED3=0x01;LED4=0x01;}
163 1 else if(music_mode==0x02)
164 1 {LED1=0x01;LED2=0x01;LED3=0x00;LED4=0x01;}
165 1 else if(music_mode==0x03)
166 1 {LED1=0x01;LED2=0x01;LED3=0x01;LED4=0x00;}
167 1
168 1 pt2322_buffer[0]=0x10+pt2322_trim_code[music_mode][0]&0x0f;
169 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // Front left channel volume TRIM control
170 1 pt2322_buffer[0]=0x20+pt2322_trim_code[music_mode][1]&0x0f;
171 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // Front right channel volume TRIM control
172 1 pt2322_buffer[0]=0x30+pt2322_trim_code[music_mode][2]&0x0f;
173 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // Center channel volume TRIM control
174 1 pt2322_buffer[0]=0x40+pt2322_trim_code[music_mode][3]&0x0f;
175 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // Rear left channel volume TRIM control
176 1 pt2322_buffer[0]=0x50+pt2322_trim_code[music_mode][4]&0x0f;
177 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // Rear right channel volume TRIM control
178 1 pt2322_buffer[0]=0x60+pt2322_trim_code[music_mode][5]&0x0f;
179 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // Subwoofer volume TRIM control
C51 COMPILER V8.05a PT2322S 10/22/2006 21:41:57 PAGE 4
180 1
181 1 // ------- 3D开放的问题 -------
182 1 if(pt2322_trim_code[music_mode][5]!=0x00)
183 1 {function_mode|=0x04; //开放3D功能
184 2 }
185 1 else
186 1 {function_mode=function_mode&0x0b; //屏蔽3D功能
187 2 }
188 1 pt2322_buffer[0]=0x70+function_mode&0x0f;
189 1 if(PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01)==0x00) //; // 关于3D功能的控制
190 1 {//rs232_senddata(0x85);
191 2 //rs232_senddata(0x01);
192 2 }
193 1 else
194 1 {//rs232_senddata(0x85);
195 2 //rs232_senddata(0x02);
196 2 }
197 1
198 1
199 1
200 1 }
201
202 void pt2322_mutecontrol(unsigned char mute_onoff)
203 {if(mute_onoff!=0x00)
204 1 {function_mode|=0x08; //mute on
205 2 MUTE_CTL=0x01; //静音 高为截至
206 2 }
207 1 else
208 1 {function_mode=function_mode&0x07; //mute off
209 2 MUTE_CTL=0x00; // 低开放音频
210 2 }
211 1 pt2322_buffer[0]=0x70+(function_mode&0x0f);
212 1 PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01); // 关于mute功能的控制
213 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 499 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 8 1
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -