⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 communication.lst

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
 382   3                                                      {       //为本外线消息  
 383   4                                                              RawMessageNum--;        //清楚已处理的消息
 384   4                                                              ClearAMessage(i);                                                                                               
 385   4                                                              return; 
 386   4                                                      }//本外线消息
 387   3                                      }//消息查询
 388   2                      }//是否有消息
 389   1      }//函数
 390          
 391          void    exttel_hold_deal(UCHAR telnum)  //telnum 为分机号码 0,1,2,3,4,5,6,7
 392          {
 393   1              idata UCHAR i,temp;
 394   1              
 395   1              if(RawMessageNum!=0)
 396   1                      {
 397   2                              for(i=0;i<MESSAGEGROUPNUMBER;i++)
 398   2                                      {
 399   3                                              if(ReadMessageGroup(i,MessageGroup_origin)==MACHINE_ID[telnum])
 400   3                                                      {       //为本分机消息                  
 401   4                                                              if(ReadMessageGroup(i,MessageGroup_type)==EXTTEL_UNHOLD_MESSAGETYPE)
 402   4                                                                      {       //摘机消息                                                                              
 403   5                                                                              temp=CreateExtComGroup(telnum);
 404   5                                                                              if(temp==0xff)
 405   5                                                                                      {//没有通话组资源出错
 406   6                                                                                              SetExtTelErrorSound(telnum);    //给出出错提示
 407   6                                                                                              WriteExtTelState(telnum,exttel_error);                                                                                          
 408   6                                                                                      }
 409   5                                                                              else if(ReadExtComGroup(temp,ExtComGroup_type)==INSIDECOMTYPE)
 410   5                                                                                      {//内部通话
 411   6                                                                                              SetExtTelQuietSound(telnum);//初始化提示音
 412   6                                                                                              Writesoundway(telnum,HINTSOUND,ON);//给出450HZ可拨号提示音                                                                                                                                                      
 413   6                                                                                              StarDecordDTMF(MACHINE_ID[telnum]);//开始检测DTMF                                                                                                                                                                                                                                                                                                                                                                               
             -                                                                                                                                                                        
 414   6                                                                                      }       
 415   5                                                                              else    
 416   5                                                                                      {//外部通话
 417   6                                                                                              SetExtTelQuietSound(telnum);//初始化提示音
 418   6                                                                                              WriteExtComGroup(temp,ExtComGroup_object,OUTSIDELINE_ID[temp]);//选择通道连接                                                   
 419   6                                                                                              TakeOutsideLine(temp);//拿线                                                                                                    
 420   6                                                                                              StarDecordDTMF(MACHINE_ID[telnum]);     //开始检测DTMF                                                                                                                  
 421   6                                                                                              Writesoundway(telnum,temp,ON);//连接外线                                                                                                                                                                                                                                                                                                                                                                                                                                                        
             -                        
 422   6                                                                                      }
 423   5                                                                                      
 424   5                                                                                              WriteExtTelState(telnum,exttel_unhold);//改变分机状态                                                                   
 425   5                                                                                              WriteExtTelTime(telnum,EXTTELTIME_30S);//启动时间功能           
C51 COMPILER V7.06   COMMUNICATION                                                         11/15/2007 09:02:23 PAGE 8   

 426   5                                                                                                                              
 427   5                                                                                              RawMessageNum--;        //清楚已处理的消息
 428   5                                                                                              ClearAMessage(i);                                                                                               
 429   5                                                                                              return;
 430   5                                                                      }
 431   4                                                               else
 432   4                                                                      {//其它的消息类型不处理,进行防错动作
 433   5                                                                              WriteExtTelState(telnum,exttel_hold);
 434   5                                                                                      
 435   5                                                                              RawMessageNum--;        //清楚已处理的消息
 436   5                                                                              ClearAMessage(i);                                                                                               
 437   5                                                                              return;                                                         
 438   5                                                                      }                                                                               
 439   4                                                              RawMessageNum--;        //清楚已处理的消息
 440   4                                                              ClearAMessage(i);                                                                                               
 441   4                                                              return; 
 442   4                                                      }//本分机消息
 443   3                                      }//消息查询
 444   2                      }//是否有消息
 445   1      }//函数
 446          
 447          void    exttel_unhold_deal(UCHAR        telnum)
 448          {
 449   1              idata UCHAR i,extcomgroupID,temp;
 450   1              
 451   1              if(RawMessageNum!=0)
 452   1                      {               
 453   2                              for(i=0;i<MESSAGEGROUPNUMBER;i++)
 454   2                                      {                                                                       
 455   3                                              if(ReadMessageGroup(i,MessageGroup_origin)==MACHINE_ID[telnum])
 456   3                                                      {//为本分机消息
 457   4                                                              if(ReadMessageGroup(i,MessageGroup_type)==EXTTEL_HOLD_MESSAGETYPE)
 458   4                                                                      {       //挂机消息
 459   5                                                                              extcomgroupID=findextcomgroupbyorigin(telnum);//取得通话组编号
 460   5                                                                              if(ReadExtComGroup(extcomgroupID,ExtComGroup_type)==INSIDECOMTYPE)
 461   5                                                                                      {//内部通话类型
 462   6                                                                                              Writesoundway(telnum,HINTSOUND,OFF);//停止可拨号信号提示音                                                                                                              
 463   6                                                                                              ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源                                                                                   
 464   6                                                                                      }
 465   5                                                                              else
 466   5                                                                                      {//外部通话类型                                                                                 
 467   6                                                                                              Writesoundway(telnum,extcomgroupID,OFF);//断开外线连接  
 468   6                                                                                              ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源                                                                   
 469   6                                                                                              HoldOutsideLine(extcomgroupID);//挂线                                                                                                                                                                                                                                                                                                                                                                                                                           
 470   6                                                                                      }       
 471   5                                                                              WriteExtTelState(telnum,exttel_hold);   //改变分机状态  
 472   5                                                                              WriteExtTelTime(telnum,0);//关闭时间功能        
 473   5                                                                              ClearAComGroup(extcomgroupID);  //释放通话组资源                                                                                
 474   5                                                                                      
 475   5                                                                              RawMessageNum--;        //释放消息资源
 476   5                                                                              ClearAMessage(i);                               
 477   5                                                                              return;                                                                                                                                                                                                                                                                                 
 478   5                                                                      }//挂机消息
 479   4                                                                                                                                                                                                              
 480   4                                                              if(ReadMessageGroup(i,MessageGroup_type)==DECODE_DTMF_MESSAGETYPE)
 481   4                                                                      {//DTMF解码消息
 482   5                                                                              if(ReadMessageGroup(i,(MessageGroup_datastar+1))==1)
 483   5                                                                                              {//第一个拨号信息
 484   6                                                                                                      extcomgroupID=findextcomgroupbyorigin(telnum);//取得通话组编号
 485   6                                                                                                      if(ReadExtComGroup(extcomgroupID,ExtComGroup_type)==INSIDECOMTYPE)
 486   6                                                                                                              {//原定为内部通话组
 487   7                                                                                                                      if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar)==0x0C)
C51 COMPILER V7.06   COMMUNICATION                                                         11/15/2007 09:02:23 PAGE 9   

 488   7                                                                                                                              {//实为内线拨号
 489   8                                                                                                                                      Writesoundway(telnum,HINTSOUND,OFF);//停止可拨号信号提示音      
 490   8                                                                                                                                      WriteExtTelState(telnum,exttel_dialing);        //改变分机状态
 491   8                                                                                                                                      WriteExtTelTime(telnum,0);//关闭时间功能        
 492   8                                                                                                                                      
 493   8                                                                                                                                      RawMessageNum--;        //释放消息资源
 494   8                                                                                                                                      ClearAMessage(i);                                                                                                                                       
 495   8                                                                                                                                      return;                                                                                                                         
 496   8                                                                                                                              }
 497   7                                                                                                                      else
 498   7                                                                                                                              {//实为外部通话组
 499   8                                                                                                                                      //因为外线已经被占用,无法开启外部通话 给出错提示音
 500   8                                                                                                                                      Writesoundway(telnum,HINTSOUND,OFF);//停止可拨号信号提示音                                                                                                              
 501   8                                                                                                                                      ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源                                                                                                   
 502   8                                                                                                                                      SetExtTelErrorSound(telnum);            //给出错误提示音                
 503   8                                                                                                                                      WriteExtTelState(telnum,exttel_error);//改变分机状态    
 504   8                                                                                                                                      WriteExtTelTime(telnum,0);//关闭时间功能        
 505   8                                                                                                                                      
 506   8                                                                                                                                      RawMessageNum--;        //释放消息资源
 507   8                                                                                                                                      ClearAMessage(i);                                                                                                                                       
 508   8                                                                                                                                      return;                                                                                                                                                                                                                                                                                                                         
 509   8                                                                                                                              }                                                                                                                                                               

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -