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

📄 communication.lst

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
 252   1      }
 253          
 254          UCHAR   ReadCID(UCHAR num)
 255          {
 256   1              idata UCHAR temp;
 257   1              
 258   1              PORT_STORE=PORT;
 259   1              RCON=RCON_Bank0;
 260   1              
 261   1              temp=CID[num];
 262   1              
 263   1              PORT=PORT_STORE;
 264   1              return(temp);
 265   1      }
 266          
 267          void    MessageDeal()
 268          {
 269   1        idata UCHAR i;
 270   1        for(i=0;i<OUTSIDETELNUM;i++)
 271   1              {               
 272   2                      switch(ReadOutTelState(i))
 273   2                              {
 274   3                                      case outtel_hold  :outtel_hold_deal(i);break;
 275   3                                      case outtel_ring  :outtel_ring_deal(i);break;
 276   3                                      case outtel_using :outtel_using_deal(i);break;
 277   3                                      default:break;                  
 278   3                              }       
 279   2              }
 280   1        
 281   1        for(i=0;i<ExtTelNum;i++)      //内线处理
 282   1              {
 283   2                      switch(ReadExtTelState(i))
 284   2                              {
 285   3                                      case exttel_hold                                        :exttel_hold_deal(i);   break;                                  //内线状态
 286   3                                      case exttel_unhold                              :exttel_unhold_deal(i);break;                                   //摘机空闲态
 287   3                                      case exttel_dialing                             :exttel_dialing_deal(i);break;                          //拨号状态
 288   3                                      case exttel_sendCID                             :exttel_sendCID_deal(i);break;                          //发送来电显示信号                                      
 289   3                                      case exttel_waiting                             :exttel_waiting_deal(i);break;                          //主叫方振铃等待状态
 290   3                                      case exttel_ring                                        :exttel_ring_deal(i);break;                                             //振铃状态
 291   3                                      case exttel_useing                              :exttel_useing_deal(i);break;                                   //通话状态
 292   3                                      case exttel_flash                                       :exttel_flash_deal(i);break;                                    //闪断状态
 293   3                                      case exttel_switch                              :exttel_switch_deal(i);break;                                   //转接状态              
 294   3                                      case exttel_switch_dialing:exttel_switch_dialing_deal(i);break; //转接拨号中    
 295   3                                      case exttel_error                                       :exttel_error_deal(i);break;                                    //出错状态 
 296   3                                      default:break;
 297   3                              }
 298   2              }                       
 299   1        return;
 300   1      }
 301          
 302          void    outtel_hold_deal(UCHAR outtelnum)
 303          {
C51 COMPILER V7.06   COMMUNICATION                                                         11/15/2007 09:02:23 PAGE 6   

 304   1              idata UCHAR i,j,temp;
 305   1              
 306   1              if(RawMessageNum!=0)
 307   1                      {
 308   2                              for(i=0;i<MESSAGEGROUPNUMBER;i++)
 309   2                                      {
 310   3                                              if(ReadMessageGroup(i,MessageGroup_origin)==OUTSIDELINE_ID[outtelnum])
 311   3                                                      {       //为本外线消息          
 312   4                                                              if(ReadMessageGroup(i,MessageGroup_type)==OUTSIDE_CALL_IN_MESSAGETYPE)
 313   4                                                                      {       //振铃消息                      
 314   5                                                                              if(ReadMessageGroup(i,MessageGroup_datastar)==0x01)
 315   5                                                                                      {//第一声振铃
 316   6                                                                                              temp=testoutline(outtelnum);
 317   6                                                                                              if(temp==0xff)
 318   6                                                                                                      {//此外线已占用
 319   7                                                                                                              WriteOutTelState(outtelnum,outtel_used);
 320   7                                                                                                              
 321   7                                                                                                              RawMessageNum--;        //清楚已处理的消息
 322   7                                                                                                              ClearAMessage(i);                                                                                               
 323   7                                                                                                              return;
 324   7                                                                                                      }
 325   6                                                                                              else
 326   6                                                                                                      {
 327   7                                                                                                              for(j=0;j<ExtTelNum;j++)
 328   7                                                                                                                      {       //查找振铃空闲分机
 329   8                                                                                                                              if(ReadExtTelState(j)==exttel_hold)
 330   8                                                                                                                                      {       
 331   9                                                                                                                                              CreatExtComGroupByID(outtelnum,MACHINE_ID[j],OUTSIDELINE_ID[outtelnum],OUTSIDECOMTYPE);
 332   9                                                                                                                                                      //建立通话组
 333   9                                                                                                                                              WriteOutTelState(outtelnum,outtel_ring);//改变外线状态
 334   9                                                                                                                                              WriteExtTelState(j,exttel_sendCID);//接受来电显示                                                                                                                       
 335   9                                                                                                                                              RawMessageNum--;        //清楚已处理的消息
 336   9                                                                                                                                              ClearAMessage(i);                                                                                               
 337   9                                                                                                                                              return;                                                                                                                                                         
 338   9                                                                                                                                      }
 339   8                                                                                                                      }       
 340   7                                                                                                      //不存在空闲分机
 341   7                                                                                                      RawMessageNum--;        //清楚已处理的消息
 342   7                                                                                                      ClearAMessage(i);                                                                                               
 343   7                                                                                                      return;                                                                                                                                                                                 
 344   7                                                                                              }                                                                               
 345   6                                                                                      }//第一声振铃
 346   5                                                                      }//振铃消息
 347   4                                                              RawMessageNum--;        //清楚已处理的消息
 348   4                                                              ClearAMessage(i);                                                                                               
 349   4                                                              return; 
 350   4                                                      }//本外线消息
 351   3                                      }//消息查询
 352   2                      }//是否有消息
 353   1      }//函数
 354          
 355          void    outtel_ring_deal(UCHAR outtelnum)
 356          {
 357   1              idata UCHAR i;
 358   1              
 359   1              if(RawMessageNum!=0)
 360   1                      {
 361   2                              for(i=0;i<MESSAGEGROUPNUMBER;i++)
 362   2                                      {
 363   3                                              if(ReadMessageGroup(i,MessageGroup_origin)==OUTSIDELINE_ID[outtelnum])
 364   3                                                      {       //为本外线消息  
 365   4                                                              RawMessageNum--;        //清楚已处理的消息
C51 COMPILER V7.06   COMMUNICATION                                                         11/15/2007 09:02:23 PAGE 7   

 366   4                                                              ClearAMessage(i);                                                                                               
 367   4                                                              return; 
 368   4                                                      }//本外线消息
 369   3                                      }//消息查询
 370   2                      }//是否有消息
 371   1      }//函数
 372          
 373          void    outtel_using_deal(UCHAR outtelnum)
 374          {
 375   1              idata UCHAR i;
 376   1              
 377   1              if(RawMessageNum!=0)
 378   1                      {
 379   2                              for(i=0;i<MESSAGEGROUPNUMBER;i++)
 380   2                                      {
 381   3                                              if(ReadMessageGroup(i,MessageGroup_origin)==OUTSIDELINE_ID[outtelnum])

⌨️ 快捷键说明

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