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

📄 soundintel.lst

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
 464   4                                                      }
 465   3                                              return; 
 466   3                                      }
 467   2                      }       
 468   1      }
 469                  
 470          void ConnectTowPoint_CD22100(UCHAR x,UCHAR y)
 471          {
 472   1              idata   UCHAR   add;
 473   1              
 474   1              add=(x-1)+((y-1)<<2);
 475   1              
 476   1              ///if(add>=16){rs232write(0xfe);return;}        //地址出错
 477   1              
 478   1              CD22100_DataIn=CD_1;            //接点连接
 479   1              
 480   1              add=add&0x0f;
 481   1              switch(add)
 482   1                      {
 483   2                              case 0 :CD22100_A=CD_0 ;CD22100_B=CD_0 ;CD22100_C=CD_0 ;CD22100_D=CD_0 ;break;
 484   2                              case 1 :CD22100_A=CD_1 ;CD22100_B=CD_0 ;CD22100_C=CD_0 ;CD22100_D=CD_0 ;break;
 485   2                              case 2 :CD22100_A=CD_0 ;CD22100_B=CD_1 ;CD22100_C=CD_0 ;CD22100_D=CD_0 ;break;
 486   2                              case 3 :CD22100_A=CD_1 ;CD22100_B=CD_1 ;CD22100_C=CD_0 ;CD22100_D=CD_0 ;break;
 487   2                              case 4 :CD22100_A=CD_0 ;CD22100_B=CD_0 ;CD22100_C=CD_1 ;CD22100_D=CD_0 ;break;
 488   2                              case 5 :CD22100_A=CD_1 ;CD22100_B=CD_0 ;CD22100_C=CD_1 ;CD22100_D=CD_0 ;break;
 489   2                              case 6 :CD22100_A=CD_0 ;CD22100_B=CD_1 ;CD22100_C=CD_1 ;CD22100_D=CD_0 ;break;
C51 COMPILER V7.06   SOUNDINTEL                                                            11/15/2007 09:02:22 PAGE 9   

 490   2                              case 7 :CD22100_A=CD_1 ;CD22100_B=CD_1 ;CD22100_C=CD_1 ;CD22100_D=CD_0 ;break;
 491   2                              case 8 :CD22100_A=CD_0 ;CD22100_B=CD_0 ;CD22100_C=CD_0 ;CD22100_D=CD_1 ;break;
 492   2                              case 9 :CD22100_A=CD_1 ;CD22100_B=CD_0 ;CD22100_C=CD_0 ;CD22100_D=CD_1 ;break;
 493   2                              case 10:CD22100_A=CD_0 ;CD22100_B=CD_1 ;CD22100_C=CD_0 ;CD22100_D=CD_1 ;break;
 494   2                              case 11:CD22100_A=CD_1 ;CD22100_B=CD_1 ;CD22100_C=CD_0 ;CD22100_D=CD_1 ;break;
 495   2                              case 12:CD22100_A=CD_0 ;CD22100_B=CD_0 ;CD22100_C=CD_1 ;CD22100_D=CD_1 ;break;
 496   2                              case 13:CD22100_A=CD_1 ;CD22100_B=CD_0 ;CD22100_C=CD_1 ;CD22100_D=CD_1 ;break;
 497   2                              case 14:CD22100_A=CD_0 ;CD22100_B=CD_1 ;CD22100_C=CD_1 ;CD22100_D=CD_1 ;break;
 498   2                              case 15:CD22100_A=CD_1 ;CD22100_B=CD_1 ;CD22100_C=CD_1 ;CD22100_D=CD_1 ;break;
 499   2                              default: break;
 500   2                      }
 501   1                      
 502   1              _nop_();
 503   1              _nop_();
 504   1              _nop_();
 505   1              _nop_();                
 506   1              _nop_();
 507   1              _nop_();
 508   1              _nop_();
 509   1              _nop_();                
 510   1              CD22100_Storbe=CD_1;
 511   1              _nop_();
 512   1              _nop_();
 513   1              _nop_();
 514   1              _nop_();        
 515   1              _nop_();
 516   1              _nop_();
 517   1              _nop_();
 518   1              _nop_();                
 519   1              CD22100_Storbe=CD_0;
 520   1              _nop_();
 521   1              _nop_();
 522   1              _nop_();
 523   1              _nop_();                
 524   1              _nop_();
 525   1              _nop_();
 526   1              _nop_();
 527   1              _nop_();        
 528   1              CD22100_Storbe=CD_1;
 529   1              P1=0XFF;
 530   1      }
 531          
 532          void CutTowPoint_CD22100(UCHAR x,UCHAR y)
 533          {
 534   1              idata   UCHAR   add;
 535   1              
 536   1              add=(x-1)+((y-1)<<2);
 537   1              
 538   1              ///if(add>=16){rs232write(0xfe);return;}        //地址出错
 539   1              
 540   1              CD22100_DataIn=CD_0;            //断开连接
 541   1              
 542   1              add=add&0x0f;
 543   1              switch(add)
 544   1                      {
 545   2                              case 0 :CD22100_A=CD_0 ;CD22100_B=CD_0 ;CD22100_C=CD_0 ;CD22100_D=CD_0 ;break;
 546   2                              case 1 :CD22100_A=CD_1 ;CD22100_B=CD_0 ;CD22100_C=CD_0 ;CD22100_D=CD_0 ;break;
 547   2                              case 2 :CD22100_A=CD_0 ;CD22100_B=CD_1 ;CD22100_C=CD_0 ;CD22100_D=CD_0 ;break;
 548   2                              case 3 :CD22100_A=CD_1 ;CD22100_B=CD_1 ;CD22100_C=CD_0 ;CD22100_D=CD_0 ;break;
 549   2                              case 4 :CD22100_A=CD_0 ;CD22100_B=CD_0 ;CD22100_C=CD_1 ;CD22100_D=CD_0 ;break;
 550   2                              case 5 :CD22100_A=CD_1 ;CD22100_B=CD_0 ;CD22100_C=CD_1 ;CD22100_D=CD_0 ;break;
 551   2                              case 6 :CD22100_A=CD_0 ;CD22100_B=CD_1 ;CD22100_C=CD_1 ;CD22100_D=CD_0 ;break;
C51 COMPILER V7.06   SOUNDINTEL                                                            11/15/2007 09:02:22 PAGE 10  

 552   2                              case 7 :CD22100_A=CD_1 ;CD22100_B=CD_1 ;CD22100_C=CD_1 ;CD22100_D=CD_0 ;break;
 553   2                              case 8 :CD22100_A=CD_0 ;CD22100_B=CD_0 ;CD22100_C=CD_0 ;CD22100_D=CD_1 ;break;
 554   2                              case 9 :CD22100_A=CD_1 ;CD22100_B=CD_0 ;CD22100_C=CD_0 ;CD22100_D=CD_1 ;break;
 555   2                              case 10:CD22100_A=CD_0 ;CD22100_B=CD_1 ;CD22100_C=CD_0 ;CD22100_D=CD_1 ;break;
 556   2                              case 11:CD22100_A=CD_1 ;CD22100_B=CD_1 ;CD22100_C=CD_0 ;CD22100_D=CD_1 ;break;
 557   2                              case 12:CD22100_A=CD_0 ;CD22100_B=CD_0 ;CD22100_C=CD_1 ;CD22100_D=CD_1 ;break;
 558   2                              case 13:CD22100_A=CD_1 ;CD22100_B=CD_0 ;CD22100_C=CD_1 ;CD22100_D=CD_1 ;break;
 559   2                              case 14:CD22100_A=CD_0 ;CD22100_B=CD_1 ;CD22100_C=CD_1 ;CD22100_D=CD_1 ;break;
 560   2                              case 15:CD22100_A=CD_1 ;CD22100_B=CD_1 ;CD22100_C=CD_1 ;CD22100_D=CD_1 ;break;
 561   2                              default: break;
 562   2                      }
 563   1              _nop_();
 564   1              _nop_();
 565   1              _nop_();
 566   1              _nop_();                
 567   1              _nop_();
 568   1              _nop_();
 569   1              _nop_();
 570   1              _nop_();                        
 571   1              CD22100_Storbe=CD_1;
 572   1              _nop_();
 573   1              _nop_();
 574   1              _nop_();
 575   1              _nop_();        
 576   1              _nop_();
 577   1              _nop_();
 578   1              _nop_();
 579   1              _nop_();                
 580   1              CD22100_Storbe=CD_0;
 581   1              _nop_();
 582   1              _nop_();
 583   1              _nop_();
 584   1              _nop_();                
 585   1              _nop_();
 586   1              _nop_();
 587   1              _nop_();
 588   1              _nop_();        
 589   1              CD22100_Storbe=CD_1;
 590   1              P1=0XFF;
 591   1      }
 592          
 593          
 594          void DTMFSend()
 595          {
 596   1              idata UCHAR     i;
 597   1              if(DTMFSendStep==0)
 598   1                      {//检查是否有发送任务
 599   2                              if(ReadCID(CID_state)==CID_STATE_ENREAD)
 600   2                                      {//允许发送                                                                     
 601   3                                              if(ReadCID(CID_length)==0)
 602   3                                                      {//发送完毕 允许重新写入
 603   4                                                              for(i=0;i<CIDLENGTH;i++)
 604   4                                                                      {
 605   5                                                                                      WriteCID(i,0x00);
 606   5                                                                      }       
 607   4                                                              WriteCID(CID_state,CID_STATE_SENDOVER); //发送完毕
 608   4                                                              WriteCID(CID_ptr,(CID_ptr+1));//初始化指针      
 609   4                                                                              
 610   4                                                              return;                                                                         
 611   4                                                      }
 612   3                                                                              
 613   3                                              DTMFData=ReadCID(ReadCID(CID_ptr));
C51 COMPILER V7.06   SOUNDINTEL                                                            11/15/2007 09:02:22 PAGE 11  

 614   3                                              if(DTMFData==0){DTMFData=0x0a;}
 615   3                                              DTMFSendStep=1; //启动发送过程
 616   3                                              
 617   3                                              WriteCID(CID_ptr,(ReadCID(CID_ptr)+1));                         //指向下一个数据                        
 618   3                                              WriteCID(CID_length,(ReadCID(CID_length)-1)); //长度                                                            
 619   3                                      }
 620   2                              return;
 621   2                      }
 622   1                      
 623   1              if(DTMFSendStep==1)
 624   1                      {//控制产生DTMF信号                             
 625   2                              EnDTMFCreate=0;
 626   2                                      
 627   2                              //DTMF信号产生
 628   2                              DTMFData=DTMFData&0x0f;
 629   2                              for(i=0;i<5;i++)
 630   2                                      {
 631   3                                              DTMF_Data=(bit)((DTMFData>>i)&0x01);
 632   3                                              _nop_();
 633   3                                              DTMF_Clk=0;
 634   3                                              _nop_();
 635   3                                              _nop_();
 636   3                                              DTMF_Clk=1;
 637   3                                      }                       
 638   2                                                                                                                      //调用时间周期为2ms
 639   2                              DTMFStandingTime=40;  //持续时间为100ms
 640   2                              DTMFSendStep=2;
 641   2                              return;
 642   2                      }
 643   1                      
 644   1        if(DTMFSendStep==2)
 645   1                      {//持续发送时间
 646   2                              DTMFStandingTime--;                                             
 647   2                                      
 648   2                              if(DTMFStandingTime==0)
 649   2                                      {                                               
 650   3                                              DTMFSendStep=3;                 //调用时间周期为2ms     
 651   3                                              EnDTMFCreate=1;
 652   3                                              DTMFStandingTime=20;//空白间隔时间
 653   3                                      }
 654   2                              return;         
 655   2                      }
 656   1                      
 657   1              if(DTMFSendStep==3)
 658   1                      {//间隙时间
 659   2                              DTMFStandingTime--;
 660   2                              if(DTMFStandingTime==0)
 661   2                                      {//完成一个信号的发送,恢复正常状态     
 662   3                                              EnDTMFCreate=0;
 663   3                                              DTMFData=0xff;          //DTMF stop
 664   3                                              for(i=0;i<5;i++)
 665   3                                                      {
 666   4                                                              DTMF_Data=(bit)((DTMFData>>i)&0x01);
 667   4                                                              _nop_();
 668   4                                                              DTMF_Clk=0;
 669   4                                                              _nop_();
 670   4                                                              _nop_();
 671   4                                                              DTMF_Clk=1;
 672   4                                                      }       
 673   3                                                                                                                              
 674   3                                              DTMFSendStep=0;
 675   3                                              EnDTMFCreate=1;
C51 COMPILER V7.06   SOUNDINTEL                                                            11/15/2007 09:02:22 PAGE 12  

 676   3                                              DTMF_Data=1;
 677   3                                              DTMF_Clk=1;
 678   3                                              DTMFStandingTime=0;                                                                     
 679   3                                      }
 680   2                       return;                
 681   2               }              
 682   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3078    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      29
   IDATA SIZE       =      3      28
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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