📄 soundintel.lst
字号:
229 3 }
230 2
231 2 if(ReadHintSound(i,TYPE)==HintSoundType_wait)
232 2 {//等待提示音
233 3 temp=ReadHintSound(i,TIMEH);
234 3 temp=(temp<<8)+ReadHintSound(i,TIMEL);
235 3 if(ReadHintSound(i,STATE)==STATE_ON) //状态翻转
236 3 {//由 接通状态 到 断开状态
237 4 if(temp<HintSound_1S)
238 4 {//时间还没有达到
239 5 temp++;
240 5 WriteHintSound(i,TIMEH,(temp>>8));
241 5 WriteHintSound(i,TIMEL,(temp));
C51 COMPILER V7.06 SOUNDINTEL 11/15/2007 09:02:22 PAGE 5
242 5 }
243 4 else
244 4 {
245 5 WriteHintSound(i,TIMEH,0);
246 5 WriteHintSound(i,TIMEL,0);
247 5 WriteHintSound(i,STATE,STATE_OFF);
248 5 Writesoundway(i,HINTSOUND,OFF);
249 5 }
250 4 }
251 3 else
252 3 {//由 断开状态 到 接通状态
253 4 if(temp<HintSound_4S)
254 4 {//时间还没有达到4S
255 5 temp++;
256 5 WriteHintSound(i,TIMEH,(temp>>8));
257 5 WriteHintSound(i,TIMEL,(temp));
258 5 }
259 4 else
260 4 {
261 5 WriteHintSound(i,TIMEH,0);
262 5 WriteHintSound(i,TIMEL,0);
263 5 WriteHintSound(i,STATE,STATE_ON);
264 5 Writesoundway(i,HINTSOUND,ON);
265 5 }
266 4 }
267 3 }
268 2 }
269 1 }
270
271 void SoundWayLoop(void)
272 {
273 1 idata UCHAR i,j;
274 1 for(i=0;i<16;i++)
275 1 {
276 2 for(j=0;j<8;j++)
277 2 {
278 3 if(Readsoundway(i,j)==OFF)
279 3 {CutTowPoint(i,j);} //关断状态
280 3 else if(Readsoundway(i,j)==ON)
281 3 {ConnectTowPoint(i,j);} //连通状态
282 3 else
283 3 {Writesoundway(i,j,OFF);} //出错状态 ,关闭通道
284 3 }
285 2 }
286 1 }
287
288 void ConnectTowPoint(UCHAR point_x,UCHAR point_y)
289 {
290 1 idata UCHAR address,x,y;
291 1
292 1 address=0x00;
293 1 x=point_x&0x0f;
294 1 y=point_y&0x07;
295 1
296 1 address=address<<3;
297 1 address=address|y;
298 1 address=address<<4;
299 1 address=address|x;
300 1 address=address|0x80; //connect
301 1
302 1 PORT=address;
303 1 SoundSwitchStorbe=0;
C51 COMPILER V7.06 SOUNDINTEL 11/15/2007 09:02:22 PAGE 6
304 1 SoundSwitchStorbe=1;
305 1 SoundSwitchStorbe=0;
306 1
307 1 PORT=0xff;
308 1 }
309
310
311 void CutTowPoint(UCHAR point_x,UCHAR point_y)
312 {
313 1 idata UCHAR address,x,y;
314 1
315 1 address=0x00;
316 1 x=point_x&0x0f;
317 1 y=point_y&0x07;
318 1
319 1 address=address<<3;
320 1 address=address|y;
321 1 address=address<<4;
322 1 address=address|x;
323 1 address=address&0x7f; //cut
324 1
325 1 PORT=address;
326 1 SoundSwitchStorbe=0;
327 1 SoundSwitchStorbe=1;
328 1 SoundSwitchStorbe=0;
329 1
330 1 PORT=0xff;
331 1 }
332
333 void StarDecordDTMF(UCHAR SingleAddress)
334 {
335 1 idata UCHAR i,temp;
336 1 //查找是否有解码资源
337 1 for(i=0;i<DTMF_DecordResouceNum;i++)
338 1 {
339 2 if(ReadDTMF_Decord(i,dtmfdecord_state)==0)
340 2 {//找到空闲的解码芯片 //连接输入信号
341 3 switch(i)
342 3 {
343 4 case 0: temp=DTMF_DecordResouce_1;break;
344 4 case 1: temp=DTMF_DecordResouce_2;break;
345 4 default: return;
346 4 }
347 3 //资源连接
348 3 Writesoundway((SingleAddress-EXTTEL_ID),temp,ON);
349 3
350 3 WriteDTMF_Decord(i,dtmfdecord_res,SingleAddress);
351 3 WriteDTMF_Decord(i,dtmfdecord_state,1); //资源被启动
352 3
353 3 return;
354 3 }
355 2 }
356 1 }
357
358 void DecordDTMF()
359 {//扫描是否有信号解出
360 1 idata UCHAR i,temp_dv,temp_data;
361 1
362 1 EnDetectRing=0;
363 1 PORT=0xff;
364 1 temp_dv=PORT;
365 1 EnDetectRing=1;
C51 COMPILER V7.06 SOUNDINTEL 11/15/2007 09:02:22 PAGE 7
366 1
367 1 PORT=0xff;
368 1
369 1 for(i=0;i<DTMF_DecordResouceNum;i++)
370 1 {
371 2 if(ReadDTMF_Decord(i,dtmfdecord_state)==1)
372 2 {//出现数据
373 3 if((bit)((temp_dv>>(4+i))&0x01))
374 3 {
375 4 WriteDTMF_Decord(i,dtmfdecord_state,2);
376 4 }
377 3 }
378 2 else if(ReadDTMF_Decord(i,dtmfdecord_state)==2)
379 2 {
380 3 if((bit)((temp_dv>>(4+i))&0x01))
381 3 {//数据有效期持续
382 4 return;
383 4 }
384 3 else
385 3 {//取数据
386 4 switch(i)
387 4 {
388 5 case 0: EnDTMFDecordOut1=1;break;
389 5 case 1: EnDTMFDecordOut2=1;break;
390 5 default: break;
391 5 }
392 4 PORT=0xff;
393 4 temp_data=PORT;
394 4 switch(i)
395 4 {
396 5 case 0: EnDTMFDecordOut1=0;break;
397 5 case 1: EnDTMFDecordOut2=0;break;
398 5 default: break;
399 5 }
400 4
401 4 temp_data=temp_data&0x0f;
402 4 if(temp_data==0x0a){temp_data=0;}
403 4
404 4 if(ReadDTMF_Decord(i,dtmfdecord_length)<12)
405 4 {
406 5 WriteDTMF_Decord(i,(ReadDTMF_Decord(i,dtmfdecord_length)+dtmfdecord_datastar),temp_data);
407 5 //数据存储
408 5 WriteDTMF_Decord(i,dtmfdecord_length,(ReadDTMF_Decord(i,dtmfdecord_length)+1));
409 5 //改变解码数据长度
410 5 }
411 4 else
412 4 {//数据区益处
413 5 ;
414 5 }
415 4 //存储数据
416 4 SendDecodeMessage((ReadDTMF_Decord(i,dtmfdecord_res)), (ReadDTMF_Decord(i,dtmfdecord_length)),i);
417 4 //发送解码消息
418 4
419 4 WriteDTMF_Decord(i,dtmfdecord_state,1);
420 4 }
421 3 }
422 2 else
423 2 {
424 3 WriteDTMF_Decord(i,dtmfdecord_state,0);//出错归原
425 3 return;
426 3 }
427 2 }
C51 COMPILER V7.06 SOUNDINTEL 11/15/2007 09:02:22 PAGE 8
428 1 }
429
430 UCHAR GetDTMFResNum(UCHAR originresID)
431 {
432 1 idata UCHAR i,temp=0;
433 1 for(i=0;i<DTMF_DecordResouceNum;i++)
434 1 {
435 2 if(ReadDTMF_Decord(i,dtmfdecord_res)==originresID)
436 2 {
437 3 switch(i)
438 3 {
439 4 case 0: temp=DTMF_DecordResouce_1;break;
440 4 case 1: temp=DTMF_DecordResouce_2;break;
441 4 default: break;
442 4 }
443 3 return(temp);
444 3 }
445 2 }
446 1 return(0xff);//出错
447 1 }
448
449 void ReleaseDTMFRes(UCHAR originresID)
450 {
451 1 idata UCHAR i,j;
452 1
453 1 //首先要切断DTMF信号通道
454 1 i=GetDTMFResNum(originresID);
455 1 Writesoundway((originresID-EXTTEL_ID),i,OFF);
456 1
457 1 for(i=0;i<15;i++)
458 1 {
459 2 if(ReadDTMF_Decord(i,dtmfdecord_res)==originresID)
460 2 {
461 3 for(j=0;j<15;j++)
462 3 {
463 4 WriteDTMF_Decord(i,j,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -