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

📄 teloperate.lst

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
 154   3                                              RingGroup[i][4]=temp>>8;        
 155   3                                              RingGroup[i][5]=temp;                   //设置振铃间隔时间                                      
 156   3                                                                              
 157   3                                              return  1;              //设置振铃成功
 158   3                                      }
 159   2                      }       
 160   1              return 0x2;                             //振铃忙,请等待        
 161   1      }
 162          
 163          char    ExtTelStopRing(UCHAR StopRingTel)
 164          {
 165   1              idata   UCHAR i,j;
 166   1              
 167   1              if(StopRingTel>ExtTelNum)
 168   1                      {       
 169   2                              return 0xfe;            //超出分机范围出错
 170   2                      }       
 171   1              for(i=0;i<MaxNumAtRing;i++)
 172   1                      {
 173   2                              if(RingGroup[i][1]==StopRingTel)//查找分机
 174   2                                      {
 175   3                                              
 176   3                                              j=0x01;
 177   3                                              j=(j<<(StopRingTel));   
 178   3                                              j=j^0xff;                                                                               //停止分机振铃  
 179   3                                              ExtTelRingState=ExtTelRingState&j;                                                                      
C51 COMPILER V7.06   TELOPERATE                                                            11/15/2007 09:02:22 PAGE 4   

 180   3                                              
 181   3                                              RingGroup[i][0]=0;                              //停止振铃
 182   3                                              RingGroup[i][1]=0;                              //释放资源
 183   3                                              RingGroup[i][2]=0;
 184   3                                              RingGroup[i][3]=0;
 185   3                                              RingGroup[i][4]=0;
 186   3                                              RingGroup[i][5]=0;                                                      
 187   3                                              return  1;              //设置停止振铃成功
 188   3                                      }
 189   2                      }       
 190   1              return 0x2;                             //分机已经停止振铃                      
 191   1      }
 192          
 193          void    RingTimeTick()
 194          {
 195   1              data    UCHAR i,j;
 196   1              idata   WORD temp;
 197   1      
 198   1              for(i=0;i<MaxNumAtRing;i++)
 199   1                      {//循环配置
 200   2                              if(RingGroup[i][0]==0)
 201   2                                      {//没有振铃任务
 202   3                                              continue;                               
 203   3                                      }
 204   2                              else if(RingGroup[i][0]>RingTime)
 205   2                                      {//振铃超时结束
 206   3      
 207   3                                              j=0x01;
 208   3                                              j=(j<<(RingGroup[i][1]));       
 209   3                                              j=j^0xff;                                                                               //停止分机振铃  
 210   3                                              ExtTelRingState=ExtTelRingState&j;      
 211   3                                      
 212   3                                              LED=1;                                                          
 213   3                                              RingGroup[i][0]=0;                              //释放资源
 214   3                                              RingGroup[i][1]=0;
 215   3                                              RingGroup[i][2]=0;
 216   3                                              RingGroup[i][3]=0;
 217   3                                              RingGroup[i][4]=0;
 218   3                                              RingGroup[i][5]=0;
 219   3                                      }       
 220   2                              else
 221   2                                      {//振铃过程中配置
 222   3                                              temp=RingGroup[i][2];
 223   3                                              temp=(temp<<8)+RingGroup[i][3];
 224   3                                              
 225   3                                              if(temp==0)
 226   3                                                      {                                                                                               
 227   4                                                              temp=RingGroup[i][4];
 228   4                                                              temp=(temp<<8)+RingGroup[i][5];
 229   4                                                              
 230   4                                                              if(temp==0)
 231   4                                                                      {//完成一次响铃过程
 232   5                                                                              RingGroup[i][0]++;                              //响铃次数加一
 233   5                                                                              
 234   5                                                                              temp=RINGTIMELENGTH;
 235   5                                                                              RingGroup[i][2]=temp>>8;        
 236   5                                                                              RingGroup[i][3]=temp;                   //设置振铃时间  
 237   5                                                                              temp=RINGQUIETTIMELENGTH;
 238   5                                                                              RingGroup[i][4]=temp>>8;        
 239   5                                                                              RingGroup[i][5]=temp;                   //设置振铃间隔时间                                                                                                                                                      
 240   5                                                                      }
 241   4                                                              else
C51 COMPILER V7.06   TELOPERATE                                                            11/15/2007 09:02:22 PAGE 5   

 242   4                                                                      {//间隔过程中
 243   5                                                                              temp--;
 244   5                                                                              LED=1;
 245   5                                                                              RingGroup[i][4]=temp>>8;        
 246   5                                                                              RingGroup[i][5]=temp;            //间隔时间递减 
 247   5                                                                              
 248   5                                                                              j=0x01;
 249   5                                                                              j=(j<<(RingGroup[i][1]));       
 250   5                                                                              j=j^0xff;                                                                               //将对应的位清零,产生间隔              
 251   5                                                                              ExtTelRingState=ExtTelRingState&j;                                                                                                                                                                                      
 252   5                                                                      }
 253   4                                                      }
 254   3                                              else
 255   3                                                      {//响铃过程中
 256   4                                                              temp=temp-1;
 257   4                                                              RingGroup[i][2]=temp>>8;        
 258   4                                                              RingGroup[i][3]=temp;                   //振铃时间递减
 259   4                                                                                                                                                                                                                                                                                                                              
 260   4                                                              LED=0;
 261   4                                                              
 262   4                                                              j=0x01;
 263   4                                                              j=(j<<(RingGroup[i][1]));       //将对应的位置一,产生振铃
 264   4                                                              ExtTelRingState=ExtTelRingState|j;                                                      
 265   4                                                      }       
 266   3                                      }                               
 267   2                      }       
 268   1                      PORT=ExtTelRingState;
 269   1                      EnRingPort=0;
 270   1                      EnRingPort=1;
 271   1                      EnRingPort=0;                                                   //动作实现                      
 272   1      }                          
 273          
 274          /*
 275          void ResourceWatch()
 276          {
 277                  idata UCHAR i,j;
 278                  
 279                  rs232write(0x11);
 280                  
 281                  for(i=0;i<MaxNumAtRing;i++)
 282                          {
 283                                  for(j=0;j<6;j++)
 284                                          {
 285                                                  rs232write(RingGroup[i][j]);
 286                                          }
 287                                  rs232write(0xAA);       
 288                          }
 289                  rs232write(0x22);       
 290          }
 291          */
 292          void OutsideTelRingCheck()
 293          {
 294   1              idata UCHAR i,j;
 295   1              idata   temp;
 296   1      
 297   1              for(i=0;i<OUTSIDETELNUM;i++)
 298   1                      {//振铃检测(时间检测)
 299   2                              temp=OutsideTelRingNum[i][0];
 300   2                              temp=(temp<<8)+OutsideTelRingNum[i][1];
 301   2                              if(temp!=0)
 302   2                                      {
 303   3                                              if(temp<1000)
C51 COMPILER V7.06   TELOPERATE                                                            11/15/2007 09:02:22 PAGE 6   

 304   3                                                      {
 305   4                                                              if(temp==50)    //去抖动 150
 306   4                                                                      {
 307   5                                                                              OutsideTelRingNum[i][2]++;
 308   5                                                                              
 309   5                                                                              //发送外线呼入消息
 310   5                                                                              SendOutsideCallInMessage(i,OutsideTelRingNum[i][2]);
 311   5                                                                      }
 312   4                                                              temp++; 
 313   4                                                              OutsideTelRingNum[i][0]=temp>>8;

⌨️ 快捷键说明

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