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

📄 teloperate.lst

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
 314   4                                                              OutsideTelRingNum[i][1]=temp;   
 315   4                                                      }
 316   3                                              else
 317   3                                                      {
 318   4                                                              OutsideTelRingNum[i][0]=0;
 319   4                                                              OutsideTelRingNum[i][1]=0;
 320   4                                                              OutsideTelRingNum[i][2]=0;                                                      
 321   4                                                      }       
 322   3                                      }
 323   2                      }                               
 324   1                                              
 325   1              EnDetectRing=0;
 326   1              PORT=0xff;
 327   1              OutsideTelRingState=PORT;
 328   1              EnDetectRing=1;
 329   1              
 330   1              for(i=0;i<OUTSIDETELNUM;i++)
 331   1                      {//检测外部是否有振铃信号
 332   2                              State_Flag=(bit)((OutsideTelRingState>>i)&0x01);
 333   2                              Store_Flag=(bit)((OutsideTelRingStateStore>>i)&0x01);                   
 334   2                              
 335   2                              if(State_Flag!=Store_Flag){break;}
 336   2                      }
 337   1              if(State_Flag==Store_Flag){return;}     //无振铃信号 则返回     
 338   1      
 339   1              for(i=0;i<2;i++)//去抖动
 340   1                      {
 341   2                                      EnDetectRing=0;
 342   2                                      PORT=0xff;
 343   2                                      OutsideTelRingState=PORT;
 344   2                                      EnDetectRing=1;         
 345   2                                              
 346   2                                      for(j=0;j<OUTSIDETELNUM;j++)    
 347   2                                              {//检测外部是否有振铃信号
 348   3                                                      State_Flag=(bit)((OutsideTelRingState>>j)&0x01);
 349   3                                                      Store_Flag=(bit)((OutsideTelRingStateStore>>j)&0x01);                   
 350   3                                                      if(State_Flag!=Store_Flag){break;}
 351   3                                              }       
 352   2                                      if(State_Flag==Store_Flag){return;}                     
 353   2                                                                                                                                                                              //如果为干扰则返回      
 354   2                      }
 355   1                              
 356   1              EnDetectRing=0;
 357   1              PORT=0xff;
 358   1              OutsideTelRingState=PORT;
 359   1              EnDetectRing=1;         
 360   1              
 361   1              for(i=0;i<OUTSIDETELNUM;i++)    //振铃记数
 362   1                      {
 363   2                              State_Flag=(bit)((OutsideTelRingState>>i)&0x01);
 364   2                              Store_Flag=(bit)((OutsideTelRingStateStore>>i)&0x01);                   
 365   2                              
C51 COMPILER V7.06   TELOPERATE                                                            11/15/2007 09:02:22 PAGE 7   

 366   2                              if(State_Flag)
 367   2                                      {
 368   3                                              if(Store_Flag)
 369   3                                                      {//高电平
 370   4                                                              ;
 371   4                                                      }
 372   3                                              else
 373   3                                                      {//上升沿
 374   4                                                              OutsideTelRingNum[i][0]=0;
 375   4                                                              OutsideTelRingNum[i][1]=0;
 376   4                                                      }       
 377   3                                      }
 378   2                              else
 379   2                                      {
 380   3                                              if(Store_Flag)
 381   3                                                      {//振铃信号下降沿
 382   4                                                              OutsideTelRingNum[i][0]=0; //初始化记时
 383   4                                                              OutsideTelRingNum[i][1]=1;
 384   4                                                      }
 385   3                                              else
 386   3                                                      {//底电平                                               
 387   4              
 388   4                                                      }                                       
 389   3                                      }       
 390   2                      }
 391   1              OutsideTelRingStateStore=OutsideTelRingState;   
 392   1      }
 393          
 394          void ReleaseOutsideTelRingCheckRes(UCHAR linenum)
 395          {
 396   1              OutsideTelRingNum[linenum][0]=0;
 397   1              OutsideTelRingNum[linenum][1]=0;
 398   1              OutsideTelRingNum[linenum][2]=0;        
 399   1      }
 400          
 401          void    TakeOutsideLine(UCHAR OutsideLineNum)
 402          {
 403   1              idata UCHAR i,j;
 404   1              for(i=0;i<OUTSIDETELNUM;i++)
 405   1                      {
 406   2                              if(i==OutsideLineNum)
 407   2                                      {                                       
 408   3                                              j=0x01;
 409   3                                              j=(j<<i);       //将对应的位置一,摘机
 410   3                                              OutsideTelLineState=OutsideTelLineState|j;                                                      
 411   3                                              break;                          
 412   3                                      }
 413   2                      }
 414   1              if(i>=OUTSIDETELNUM)    
 415   1                      {
 416   2                              return;
 417   2                      }
 418   1              else
 419   1                      {
 420   2                              //rs232write(OutsideTelLineState);
 421   2                              PORT=OutsideTelLineState;
 422   2                              EnTakeLine=0;
 423   2                              EnTakeLine=1;
 424   2                              EnTakeLine=0;           
 425   2                              PORT=0xff;                                                                      
 426   2                              return;         
 427   2                      }               
C51 COMPILER V7.06   TELOPERATE                                                            11/15/2007 09:02:22 PAGE 8   

 428   1      }
 429          
 430          void    HoldOutsideLine(UCHAR OutsideLineNum)
 431          {
 432   1              idata UCHAR i,j;
 433   1              for(i=0;i<OUTSIDETELNUM;i++)
 434   1                      {
 435   2                              if(i==OutsideLineNum)
 436   2                                      {
 437   3                                              j=0x01;
 438   3                                              j=(j<<i);
 439   3                                              j=(j^0xff);     //将对应的位置零,挂机
 440   3                                              OutsideTelLineState=OutsideTelLineState&j;              
 441   3                                              break;                          
 442   3                                      }
 443   2                      }
 444   1              if(i>=OUTSIDETELNUM)    
 445   1                      {
 446   2                              return;
 447   2                      }
 448   1              else
 449   1                      {
 450   2                              //rs232write(OutsideTelLineState);
 451   2                              PORT=OutsideTelLineState;
 452   2                              EnTakeLine=0;
 453   2                              EnTakeLine=1;
 454   2                              EnTakeLine=0;                   
 455   2                                      
 456   2                              PORT=0xff;
 457   2                              return;                         
 458   2                      }               
 459   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2348    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =     33      18
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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