📄 sa5753.lst
字号:
170 7_ 494 f 173 0xad 202
-
171 关 关 0 2 0x02 2 0x02
172 */
C51 COMPILER V7.02a SA5753 07/08/2003 18:03:11 PAGE 4
173
174 //定义低音值索引表
175 BYTE code DTMF_LD_TABLE[16]=
176 {
177 0x02,0xa3,0x91,0x82,0x7b,0x6d,0x61,0x56,
178 0x51,0x48,0x41,0x3d,0x36,0xda,0xc2,0xad,
179 };
180 //定义高音值索引表
181 BYTE code DTMF_HD_TABLE[16]=
182 {
183 2, 190,170,151,143,127,113,100,
184 95,85, 75, 71, 63, 255,227,202,
185 };
186
187 type_of_timer m_music_delay_timer;
188 BYTE idata m_music_play_index=0;
189 bit m_music_space_flag; //两个音节之间的间隔标志
190
191 //#define MUSIC_CONSTANT_LEN 9
192 //BYTE xdata m_music_constant[]={0x14,0x24,0x34,0x44,0x54,0x64,0x74,0x84,0x04};
193
194 /*
195 //两只老虎
196 #define MUSIC_CONSTANT_LEN 32
197 BYTE xdata m_music_constant[]=
198 {
199 0x14,0x24,0x34,0x14,0x14,0x24,0x34,0x14,
200 0x34,0x44,0x58,0x34,0x44,0x58,0x53,0x61,
201 0x52,0x42,0x34,0x14,0x53,0x61,0x52,0x42,
202 0x34,0x14,0x14,0xd4,0x18,0x14,0xd4,0x18,
203 };
204 */
205 //玛丽的小羊
206 #define MUSIC_CONSTANT_LEN 25
207 BYTE xdata m_music_constant[]=
208 {
209 0x34,0x24,0x14,0x24,0x34,0x34,0x38,
210 0x24,0x24,0x28, 0x34,0x54,0x58,
211 0x34,0x24,0x14,0x24,0x34,0x34,0x38,
212 0x24,0x24,0x34,0x24,0x1c,
213 };
214
215
216 void sa5753_test_DTMF()
217 {
218 1 BYTE idata l_5753_reg_addr;
219 1
220 1 l_5753_reg_addr=R6_5753;
221 1 b_5753_reg_data=g_R6_data;
222 1 PWDN = 0;
223 1 IDLE1 = 0;
224 1 IDLE0 = 0;
225 1 g_R6_data=b_5753_reg_data;
226 1 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //normal工作模式
227 1
228 1 l_5753_reg_addr=R2_5753;
229 1 b_5753_reg_data=g_R2_data;
230 1 b_5753_reg_data = 0x02;
231 1 g_R2_data=b_5753_reg_data;
232 1 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //关闭 high单音
233 1
234 1 l_5753_reg_addr=R3_5753;
C51 COMPILER V7.02a SA5753 07/08/2003 18:03:11 PAGE 5
235 1 b_5753_reg_data=g_R3_data;
236 1 b_5753_reg_data = 0x02;
237 1 g_R3_data=b_5753_reg_data;
238 1 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //low单音
239 1
240 1 l_5753_reg_addr=R1_5753;
241 1 b_5753_reg_data=g_R1_data;
242 1 DTC = 1; //连续单音
243 1 S4 = 1; //开关
244 1 S8 = 1;
245 1 g_R1_data=b_5753_reg_data;
246 1 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //开通路S4,S8,连续单音
247 1
248 1 l_5753_reg_addr=R8_5753;
249 1 b_5753_reg_data=g_R8_data;
250 1 S3 = 1;
251 1 S11 = 1;
252 1 TxP = 1; //tx_mute 选项1,和外部18脚一样
253 1 g_R8_data=b_5753_reg_data;
254 1 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //
255 1
256 1 l_5753_reg_addr=R0_5753;
257 1 b_5753_reg_data=g_R0_data;
258 1 S9 =1;
259 1 S10 = 1;
260 1 TxM = 0;
261 1 g_R0_data=b_5753_reg_data;
262 1 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //
263 1
264 1 l_5753_reg_addr=R5_5753;
265 1 b_5753_reg_data=g_R5_data;
266 1 b_5753_reg_data=0x13;
267 1 g_R5_data=b_5753_reg_data;
268 1 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //控制attn6的增益,开HPDN,VOX
269 1 }
270
271 void sa5753_change_DTMF(BYTE l_index)
272 {
273 1 BYTE idata l_5753_reg_addr;
274 1
275 1 if(l_index<=16)
276 1 {
277 2 l_5753_reg_addr=R3_5753;
278 2 b_5753_reg_data=g_R3_data;
279 2 b_5753_reg_data = DTMF_LD_TABLE[l_index];
280 2 g_R3_data=b_5753_reg_data;
281 2 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //low单音
282 2
283 2
284 2 l_5753_reg_addr=R2_5753;
285 2 b_5753_reg_data=g_R2_data;
286 2 b_5753_reg_data = DTMF_HD_TABLE[l_index];
287 2 g_R2_data=b_5753_reg_data;
288 2 SM_Send(SA5753_ADDR,l_5753_reg_addr,b_5753_reg_data); //high单音
289 2
290 2 }
291 1 }
292
293 void sa5753_init(void)
294 {
295 1 init_timer(&m_music_delay_timer);
296 1 sa5753_test_DTMF();
C51 COMPILER V7.02a SA5753 07/08/2003 18:03:11 PAGE 6
297 1 m_music_play_index=0;
298 1 }
299
300 void sa5753_start_music(void)
301 {
302 1 m_music_play_index=0;
303 1 opentimer(&m_music_delay_timer,50);
304 1 m_music_space_flag=0;
305 1 }
306
307 void sa5753_stop_music(void)
308 {
309 1 m_music_play_index=0;
310 1 closetimer(&m_music_delay_timer);
311 1 sa5753_change_DTMF(0);
312 1 }
313
314 void sa5753_play_music_proc(void)
315 {
316 1 if(m_music_delay_timer.timer_off)
317 1 {
318 2 // closetimer(&m_music_delay_timer);
319 2 if(_testbit_(m_music_space_flag))
320 2 {
321 3 sa5753_change_DTMF(0);
322 3 opentimer(&m_music_delay_timer,5);
323 3 }
324 2 else
325 2 {
326 3 m_music_space_flag=1;
327 3 sa5753_change_DTMF(m_music_constant[m_music_play_index]>>4);
328 3 opentimer(&m_music_delay_timer,(m_music_constant[m_music_play_index]&0x0f)*NOTE_TIME);
329 3 m_music_play_index++;
330 3 if(m_music_play_index>=MUSIC_CONSTANT_LEN)
331 3 m_music_play_index=0;
332 3 }
333 2 }
334 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 675 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = 42 ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = 6 ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -