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

📄 soundintel.lst

📁 一个完整的用用AVR单片机开发的电话交换机程序 希望对想学习AVR开发人有帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   SOUNDINTEL                                                            11/15/2007 09:02:22 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SOUNDINTEL
OBJECT MODULE PLACED IN SoundInTel.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SoundInTel.c OPTIMIZE(2,SIZE) BROWSE NOAREGS DEBUG OBJECTEXTEND

stmt level    source

   1          /***************************************************************************
   2          //Actpro International (SZ) Ltd
   3          //Project :
   4          //File          :SoundInTel.c                                                                                           Compiler:Keil
   5          //Editor: LIUYI
   6          //Data:         25-12-29                                                                                                                Ver:
   7          //General Function
   8          
   9          
  10          */
  11          #include <switch.h>
  12          
  13          #define CD_1  0
  14          #define CD_0  1
  15          
  16          void    SoundInTelInit();
  17          void    ConnectTowPoint(UCHAR point_x,UCHAR point_y);
  18          void    CutTowPoint(UCHAR point_x,UCHAR point_y);
  19          void    DecordDTMF();
  20          void  StarDecordDTMF(UCHAR      SingleAddress);
  21          void    ReleaseDTMFRes(UCHAR originresID);
  22          UCHAR GetDTMFResNum(UCHAR originresID);
  23          void    ConnectTowPoint_CD22100(UCHAR x,UCHAR y);
  24          void    CutTowPoint_CD22100(UCHAR x,UCHAR y);
  25          void  DTMFSend();
  26          void    WriteHintSound(UCHAR tel,UCHAR state,UCHAR num);
  27          UCHAR   ReadHintSound(UCHAR tel,UCHAR state);
  28          void    DealHintSound();
  29          void  SetExtTelQuietSound(UCHAR telnum);
  30          void  SetExtTelErrorSound(UCHAR telnum);
  31          void  SetExtTelWaitSound(UCHAR telnum);
  32          UCHAR   ReadHintSound(UCHAR tel,UCHAR item);
  33          void    WriteHintSound(UCHAR tel,UCHAR item,UCHAR num);
  34          
  35          xdata   UCHAR   EXTTelHintSound[ExtTelNum][4]                                                                   _at_  0x200;//存储提示音的类型 typ、state、timeh、timel
  36          xdata   UCHAR   DTMF_Decord[DTMF_DecordResouceNum][15]                          _at_    0x220;//DTMF解码资源
  37                                                          //DTMF_DecordResouceNum=2; 5:State(1) SoundInput(1) length(1) data(12)        
  38          xdata   UCHAR   soundway[16][8]                                                                                                                         _at_    0x240;//8816语音通路状态
  39                                                          //x(16) y(8)                                            
  40          UCHAR   ReadDTMF_Decord(UCHAR res,UCHAR item);
  41          void    WriteDTMF_Decord(UCHAR res,UCHAR item,UCHAR num);
  42          UCHAR   Readsoundway(UCHAR x,UCHAR y);
  43          void    Writesoundway(UCHAR x,UCHAR y,UCHAR num);
  44          void    SoundWayLoop(void);
  45          
  46          idata   UCHAR   DTMFSendStep;
  47          idata   UCHAR   DTMFData;
  48          idata   UCHAR   DTMFStandingTime;                                                
  49                                                          
  50          void SoundInTelInit()
  51          {
  52   1              idata UCHAR i,j;
  53   1              
  54   1              //cut all connection
  55   1              for(i=0;i<16;i++)
C51 COMPILER V7.06   SOUNDINTEL                                                            11/15/2007 09:02:22 PAGE 2   

  56   1                      {
  57   2                              for(j=0;j<8;j++)
  58   2                                      {
  59   3                                              Readsoundway(i,j);
  60   3                                              Writesoundway(i,j,0);
  61   3                                      }
  62   2                      }               
  63   1                      
  64   1              //cut all connection in CD22100
  65   1              for(i=1;i<5;i++)
  66   1                      {
  67   2                              for(j=1;j<5;j++)
  68   2                                      {
  69   3                                              CutTowPoint_CD22100(i,j);
  70   3                                      }
  71   2                      }       
  72   1              
  73   1              //data init
  74   1              for(i=0;i<DTMF_DecordResouceNum;i++)
  75   1                      {
  76   2                              for(j=0;j<15;j++)
  77   2                                      {
  78   3                                              ReadDTMF_Decord(i,j);
  79   3                                              WriteDTMF_Decord(i,j,0);
  80   3                                      }
  81   2                      }
  82   1              
  83   1              DTMFSendStep=0; 
  84   1              DTMFData=0;     
  85   1              DTMFStandingTime=0;     
  86   1      }
  87          
  88          void    Writesoundway(UCHAR x,UCHAR y,UCHAR num)
  89          {
  90   1              PORT_STORE=PORT;
  91   1              RCON=RCON_Bank2;
  92   1      
  93   1              soundway[x][y]=num;
  94   1              
  95   1              RCON=RCON_Bank0;
  96   1              PORT=PORT_STORE;        
  97   1              return;
  98   1      }
  99          UCHAR   Readsoundway(UCHAR x,UCHAR y)
 100          {
 101   1              idata UCHAR temp;
 102   1              
 103   1              PORT_STORE=PORT;
 104   1              RCON=RCON_Bank2;
 105   1              
 106   1              temp=soundway[x][y];
 107   1              
 108   1              RCON=RCON_Bank0;
 109   1              PORT=PORT_STORE;
 110   1              
 111   1              return(temp);
 112   1      }
 113          
 114          void    WriteDTMF_Decord(UCHAR res,UCHAR item,UCHAR num)
 115          {
 116   1              PORT_STORE=PORT;
 117   1              RCON=RCON_Bank2;
C51 COMPILER V7.06   SOUNDINTEL                                                            11/15/2007 09:02:22 PAGE 3   

 118   1      
 119   1              DTMF_Decord[res][item]=num;
 120   1              
 121   1              RCON=RCON_Bank0;
 122   1              PORT=PORT_STORE;        
 123   1              return;
 124   1      }
 125          UCHAR   ReadDTMF_Decord(UCHAR res,UCHAR item)
 126          {
 127   1              idata UCHAR temp;
 128   1              
 129   1              PORT_STORE=PORT;
 130   1              RCON=RCON_Bank2;
 131   1              
 132   1              temp=DTMF_Decord[res][item];
 133   1              
 134   1              RCON=RCON_Bank0;
 135   1              PORT=PORT_STORE;
 136   1              
 137   1              return(temp);
 138   1      }
 139          
 140          
 141          void    WriteHintSound(UCHAR tel,UCHAR item,UCHAR num)
 142          {
 143   1              PORT_STORE=PORT;
 144   1              RCON=RCON_Bank2;
 145   1      
 146   1              EXTTelHintSound[tel][item]=num;
 147   1              
 148   1              RCON=RCON_Bank0;
 149   1              PORT=PORT_STORE;        
 150   1              return;
 151   1      }
 152          UCHAR   ReadHintSound(UCHAR tel,UCHAR item)
 153          {
 154   1              idata UCHAR temp;
 155   1              
 156   1              PORT_STORE=PORT;
 157   1              RCON=RCON_Bank2;
 158   1              
 159   1              temp=EXTTelHintSound[tel][item];
 160   1              
 161   1              RCON=RCON_Bank0;
 162   1              PORT=PORT_STORE;
 163   1              
 164   1              return(temp);
 165   1      }
 166          
 167          void SetExtTelWaitSound(UCHAR telnum)
 168          {
 169   1              WriteHintSound(telnum,TYPE,HintSoundType_wait);
 170   1              WriteHintSound(telnum,STATE,STATE_ON);                                  //450提示音接通状态
 171   1              WriteHintSound(telnum,TIMEH,0);                                                                 //时间设置
 172   1              WriteHintSound(telnum,TIMEL,0);
 173   1              Writesoundway(telnum,HINTSOUND,ON);                                                     //接通通道
 174   1                      //将分机设置为等待提示音状态
 175   1      }
 176          
 177          void SetExtTelErrorSound(UCHAR telnum)
 178          {
 179   1              WriteHintSound(telnum,TYPE,HintSoundType_error);
C51 COMPILER V7.06   SOUNDINTEL                                                            11/15/2007 09:02:22 PAGE 4   

 180   1              WriteHintSound(telnum,STATE,STATE_ON);                                  //450提示音接通状态
 181   1              WriteHintSound(telnum,TIMEH,0);                                                                 //时间设置
 182   1              WriteHintSound(telnum,TIMEL,0);
 183   1              Writesoundway(telnum,HINTSOUND,ON);                                                     //接通通道      
 184   1                      //将分机设置为错误提示音状态            
 185   1      }
 186          
 187          void SetExtTelQuietSound(UCHAR telnum)
 188          {
 189   1              WriteHintSound(telnum,TYPE,HintSoundType_quiet);
 190   1              WriteHintSound(telnum,STATE,STATE_OFF);                                                 //450提示音关闭状态
 191   1              WriteHintSound(telnum,TIMEH,0); 
 192   1              WriteHintSound(telnum,TIMEL,0);
 193   1              Writesoundway(telnum,HINTSOUND,OFF);    
 194   1                      //将分机设置为正常状态,无提示音
 195   1      }
 196          
 197          void    DealHintSound() //每2MS调用一次
 198          {       
 199   1              idata UCHAR i;
 200   1              idata   WORD    temp;
 201   1              
 202   1              for(i=0;i<ExtTelNum;i++)
 203   1                      {
 204   2                              if(ReadHintSound(i,TYPE)==HintSoundType_error)
 205   2                                      {//错误提示音
 206   3                                              temp=ReadHintSound(i,TIMEH);
 207   3                                              temp=(temp<<8)+ReadHintSound(i,TIMEL);
 208   3                                              if(temp<HintSound_350MS)
 209   3                                                      {//时间还没有达到
 210   4                                                              temp++;
 211   4                                                              WriteHintSound(i,TIMEH,(temp>>8));
 212   4                                                              WriteHintSound(i,TIMEL,(temp));
 213   4                                                      }
 214   3                                              else
 215   3                                                      {//时间已经达到
 216   4                                                              WriteHintSound(i,TIMEH,0);      
 217   4                                                              WriteHintSound(i,TIMEL,0);                                                      
 218   4                                                              if(ReadHintSound(i,STATE)==STATE_ON)    //状态翻转
 219   4                                                                      {//断开状态
 220   5                                                                              WriteHintSound(i,STATE,STATE_OFF);
 221   5                                                                              Writesoundway(i,HINTSOUND,ON);                                                                          
 222   5                                                                      }
 223   4                                                              else
 224   4                                                                      {//接通状态
 225   5                                                                              WriteHintSound(i,STATE,STATE_ON);
 226   5                                                                              Writesoundway(i,HINTSOUND,OFF);
 227   5                                                                      }       
 228   4                                                      }

⌨️ 快捷键说明

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