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

📄 communication.lst

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
 510   7                                                                                                              }
 511   6                                                                                                      else
 512   6                                                                                                              {//原定为外部通话组
 513   7                                                                                                                      if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar)==0x0C)
 514   7                                                                                                                              {//实为内线拨号
 515   8                                                                                                                                      Writesoundway(telnum,extcomgroupID,OFF);//断开外线连接                                                          
 516   8                                                                                                                                      HoldOutsideLine(extcomgroupID);//挂断外线       
 517   8                                                                                                                                      temp=testextcomgroup_inside();//若还有空闲内部通话组,返回通话组编号
 518   8                                                                                                                                      if(temp!=0xff)
 519   8                                                                                                                                              {//还存在空闲的内部通话时 将外部通话转移到内部通话组来
 520   9                                                                                                                                                      ClearAComGroup(extcomgroupID);//消除原有通话组
 521   9                                                                                                                                                      CreatExtComGroupByID(temp,MACHINE_ID[telnum],0,INSIDECOMTYPE);  //新建空闲通话组                        
 522   9                                                                                                                                              }
 523   8                                                                                                                                      else
 524   8                                                                                                                                              {//仍然使用原通话组     
 525   9                                                                                                                                                      WriteExtComGroup(extcomgroupID,ExtComGroup_type,INSIDECOMTYPE); //修改通话类型
 526   9                                                                                                                                                      WriteExtComGroup(extcomgroupID,ExtComGroup_object,0);   //修改通话目标                                                                                                          
 527   9                                                                                                                                              }
 528   8                                                                                                                                      WriteExtTelState(telnum,exttel_dialing);        //改变分机状态
 529   8                                                                                                                                      WriteExtTelTime(telnum,0);//关闭时间功能        
 530   8                                                                                                                                      
 531   8                                                                                                                                      RawMessageNum--;        //释放消息资源
 532   8                                                                                                                                      ClearAMessage(i);                                                                                                                                       
 533   8                                                                                                                                      return;                                                                                                                                 
 534   8                                                                                                                              }
 535   7                                                                                                                      else
 536   7                                                                                                                              {//实为外部通话组
 537   8                                                                                                                                      ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源   
 538   8                                                                                                                                      WriteExtTelState(telnum,exttel_dialing);        //改变分机状态
 539   8                                                                                                                                      WriteExtTelTime(telnum,0);//关闭时间功能        
 540   8                                                                                                                                      
 541   8                                                                                                                                      RawMessageNum--;        //释放消息资源
 542   8                                                                                                                                      ClearAMessage(i);                                                                                                                                       
 543   8                                                                                                                                      return;                                                                                                                                 
 544   8                                                                                                                              }                                                                                                                               
 545   7                                                                                                              }                                                                                                               
 546   6                                                                                              }//第一个拨号信息
 547   5                                                                                      else
 548   5                                                                                              {//如果不是第一个拨号信息 给出出错提示
 549   6                                                                                                      RawMessageNum--;        //释放消息资源
C51 COMPILER V7.06   COMMUNICATION                                                         11/15/2007 09:02:23 PAGE 10  

 550   6                                                                                                      ClearAMessage(i);                                                                                                                                       
 551   6                                                                                                      return;
 552   6                                                                                              }                                                                                                                                                                                               
 553   5                                                                              }//解码消息                                                                                                             
 554   4                                                              RawMessageNum--;        //清楚已处理的消息
 555   4                                                              ClearAMessage(i);                                                                                               
 556   4                                                              return; 
 557   4                                                      }//本外线消息
 558   3                                      }//消息查询
 559   2                      }//是否有消息
 560   1      }//函数
 561          
 562          void    exttel_dialing_deal(UCHAR telnum)
 563          {
 564   1              idata UCHAR i,extcomgroupID;
 565   1              
 566   1              if(RawMessageNum!=0)
 567   1                      {
 568   2                              for(i=0;i<MESSAGEGROUPNUMBER;i++)
 569   2                                      {
 570   3                                              if(ReadMessageGroup(i,MessageGroup_origin)==MACHINE_ID[telnum])
 571   3                                                      {//为本分机消息 
 572   4                                                              if(ReadMessageGroup(i,MessageGroup_type)==EXTTEL_HOLD_MESSAGETYPE)
 573   4                                                                      {//挂机消息
 574   5                                                                              extcomgroupID=findextcomgroupbyorigin(telnum);//取得通话组编号
 575   5                                                                              if(ReadExtComGroup(extcomgroupID,ExtComGroup_type)==INSIDECOMTYPE)
 576   5                                                                                      {//内部通话类型                                                                                                                                                 
 577   6                                                                                              ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源                                                                                   
 578   6                                                                                      }
 579   5                                                                              else
 580   5                                                                                      {//外部通话类型
 581   6                                                                                              Writesoundway(telnum,extcomgroupID,OFF);//断开外线连接                                                                  
 582   6                                                                                              HoldOutsideLine(extcomgroupID);//挂线                                                                                                                                                                                                                                                                                                                                                                                                                           
 583   6                                                                                      }       
 584   5                                                                              ClearAComGroup(extcomgroupID);  //释放通话组资源                        
 585   5                                                                              WriteExtTelState(telnum,exttel_hold);   //改变分机状态
 586   5                                                                                      
 587   5                                                                              RawMessageNum--;        //释放消息资源
 588   5                                                                              ClearAMessage(i);                               
 589   5                                                                              return;                                                                                                                                                                                                                                                                                 
 590   5                                                                }     //挂机消息                                                              
 591   4                                                      
 592   4                                                        if(ReadMessageGroup(i,MessageGroup_type)==DECODE_DTMF_MESSAGETYPE)
 593   4                                                               {//DTMF解码消息        
 594   5                                                                              if(ReadMessageGroup(i,(MessageGroup_datastar+1))==2)
 595   5                                                                                      {//收到2个拨号信息
 596   6                                                                                              if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar+1)==0x01)
 597   6                                                                                                      {//戴接电话功能
 598   7                                                                                                              ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源
 599   7                                                                                                              TakeTheRingPhone(telnum);
 600   7                                                                                                              
 601   7                                                                                                              RawMessageNum--;        //释放消息资源
 602   7                                                                                                              ClearAMessage(i);                               
 603   7                                                                                                              return;                                                                                                                         
 604   7                                                                                                      }
 605   6                                                                                              else if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar+1)==0x0
             -8)
 606   6                                                                                                      {//符合分机拨号标准
 607   7                                                                                                              RawMessageNum--;        //释放消息资源
 608   7                                                                                                              ClearAMessage(i);                               
 609   7                                                                                                              return;                                                                                                 
 610   7                                                                                                      }
C51 COMPILER V7.06   COMMUNICATION                                                         11/15/2007 09:02:23 PAGE 11  

 611   6                                                                                              else
 612   6                                                                                                      {//不符合分机拨号标准
 613   7                                                                                                              extcomgroupID=findextcomgroupbyorigin(telnum);//取得通话组编号
 614   7                                                                                                              ClearAComGroup(extcomgroupID);//撤消通话组
 615   7                                                                                                              ReleaseDTMFRes(MACHINE_ID[telnum]);//释放DTMF解码资源   
 616   7                                                                                                              SetExtTelErrorSound(telnum);            //给出错误提示音        
 617   7                                                                                                              WriteExtTelState(telnum,exttel_error);//改变分机状态    
 618   7                                                                                                              
 619   7                                                                                                              RawMessageNum--;        //释放消息资源
 620   7                                                                                                              ClearAMessage(i);                               
 621   7                                                                                                              return;                                                                                                                                                                                                                 
 622   7                                                                                                      }       
 623   6                                                                                      }               
 624   5                                                                                      
 625   5                                                                              if(ReadMessageGroup(i,(MessageGroup_datastar+1))==3)
 626   5                                                                                      {//收到3个拨号信息      
 627   6                                                                                              if(ReadDTMF_Decord((ReadMessageGroup(i,MessageGroup_datastar)),dtmfdecord_datastar+2)==0x00)
 628   6                                                                                                      {//符合分机拨号标准
 629   7                                                                                                              RawMessageNum--;        //释放消息资源
 630   7                                                                                                              ClearAMessage(i);                               
 631   7                                                                                                              return;                                                                                                 
 632   7                                                                                                      }
 633   6                                                                                              else
 634   6                                                                                                      {//不符合分机拨号标准
 635   7                                                                                                              extcomgroupID=fi

⌨️ 快捷键说明

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