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

📄 mdb.lst

📁 在大型通信系统(机架插板式)中多块单板通过TDM总线
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V3.20,  SN-0  MDB                                                             05/14/03  11:30:42  PAGE 1   


DOS C51 COMPILER V3.20, COMPILATION OF MODULE MDB
OBJECT MODULE PLACED IN MDB.OBJ
COMPILER INVOKED BY: E:\APP\C51\BIN\C51.EXE MDB.C

stmt level    source

   1          /********************************************************************************/
   2          /*                                                                              */
   3          /*  描述: 复用解复用板(V2.0)控制器程序                                          */
   4          /*  VER:  2.0                                                                   */
   5          /*  REV:  0.0                                                                   */
   6          /*  作者: 胡丙龙                                                                */
   7          /*  时间: 2002年02月21日                                                        */
   8          /*  说明: 本软件版本针对VER2.0的硬件                                            */
   9          /*                                                                              */
  10          /*                                                                              */
  11          /*                                                                              */
  12          /*                                                                              */
  13          /********************************************************************************/
  14          #pragma  debug code small optimize(5) objectextend 
  15          
  16          #include "reg52.h"
  17          #include "mdb.h"
  18          #include "hpi.h"
  19          #include "hdlc.h"
  20          #include "constant.h"
  21          #include "sab82525.h"
  22          
  23          /* 外部函数 */
  24          extern void  TestSRAM(void);            /* 测试内存                             */       
  25          extern void  TestHPI(void);             /* 测试HPI                              */       
  26          extern void  TestSAB82525(void);        /* 测试SAB82525读写                     */           
  27          
  28          extern void  InitSAB82525(void);        /* 初始化HDLC函数                       */
  29          extern void  InitHDLC(void);            /* 初始化HDLC缓冲区                     */
  30          extern void  CheckRxL3Layer(void);      /* 监测第三层接收情况函数               */    
  31          extern void  CheckTxL2Layer(void);      /* 监测第二层发送情况函数               */                   
  32          extern void  CheckRxL2Layer(void);      /* 监测第二层接收情况函数               */    
  33          extern void  CheckTxL1Layer(void);      /* 监测物理层发送情况函数               */                   
  34          extern void  CheckRxL1Layer(void);      /* 监测物理层接收情况函数               */    
  35          extern uchar SendMSG(void);             /* 发送消息L3,外部接口                  */
  36          
  37          extern void  InitHPI(void);             /* 初始化HPI缓冲区及变量                */
  38          extern void  CheckTxHPI(void);          /* 监测各DSP接收命令情况                */                   
  39          extern void  CheckRxHPI(void);          /* 监测各DSP上报消息情况                */                   
  40          extern void  CheckDSP(void);            /* 监测各DSP运行状况                    */
  41          extern void  GetSWVer(void);            /* 获取CPU、DSP软件版本信息并上报       */                
  42          
  43          /* 函数声明 */
  44          void  HandleCMD(void);                  /* 处理收到的命令L3,外部接口            */
  45          void  InitMT8985(void);                 /* 配置MT8985                           */
  46          void  SetTimeSlot(uchar,uchar,uchar,uchar); /* 配置MT8985交换时隙               */
  47          
  48          /* 变量定义 */
  49          uchar xdata *SRAM     = 0x0;            /* 定义外部数据RAM芯片译码地址          */
  50          uchar xdata *SAB82525 = 0x2000;         /* 定义SAB82525芯片译码地址             */
  51          uchar xdata *MT8985   = 0x4000;         /* 定义MT8985芯片译码地址               */
  52          uchar xdata *HPI1     = 0x6000;         /* 定义HPI-DSP1接口译码地址             */
  53          uchar xdata *HPI2     = 0x8000;         /* 定义HPI-DSP2接口译码地址             */
  54          uchar xdata *HPI3     = 0xa000;         /* 定义HPI-DSP3接口译码地址             */
  55          uchar xdata *HPI4     = 0xc000;         /* 定义HPI-DSP4接口译码地址             */
C51 COMPILER V3.20,  SN-0  MDB                                                             05/14/03  11:30:42  PAGE 2   

  56          uchar xdata *RESET    = 0xe000;         /* 定义C549复位操作地址                 */
  57          
  58          uchar data m_ucTimeSlot;                /* 时隙号                               */  
  59          uchar data m_ucTimer0Count;             /* 10ms定时计数器                       */
  60          uchar data m_ucVar1;                    /* 通用变量1                            */
  61          uchar data m_ucVar2;                    /* 通用变量2                            */
  62          
  63          uchar bdata m_ucCommonFlag;     
  64          sbit m_bSendMsgFlag = m_ucCommonFlag^0; /* 需要发送消息标志                     */
  65          
  66          uchar bdata m_ucIntrFlag;      
  67          sbit m_bTimer0Flag   = m_ucIntrFlag^0;  /* 定义定时器0计时到标志                */
  68          sbit m_bTimer1Flag   = m_ucIntrFlag^1;  /* 定义计数器1计数满标志                */
  69          sbit m_bXint0Flag    = m_ucIntrFlag^2;  /* 定义外部中断0标志                    */
  70          sbit m_bXint1Flag    = m_ucIntrFlag^3;  /* 定义外部中断1标志                    */
  71          
  72          /* 外部变量 */
  73          extern bit m_bSRAMTestFlag;             /* 定义RAM测试结果标志                  */
  74          extern bit m_bSAB82525TestFlag;         /* 定义SAB825255测试结果标志            */
  75          extern bit m_bHPITestFlag;              /* 定义HPI测试结果标志                  */
  76          extern bit m_bL1RxCRCFlag;              /* 定义物理层L1接收队列CRC错误标志      */
  77          extern bit m_bL1RxErrorFlag;            /* 定义物理层L1接收队列溢出标志,收到后来不及处理    */
  78          extern bit m_bL2TxErrorFlag;            /* 定义链路层L2发送队列溢出标志,U/I/S帧来不及发送   */
  79          extern bit m_bL3TxErrorFlag;            /* 定义网络层L3发送队列溢出标志,I帧来不及发送       */
  80          extern bit m_bL1TxErrorFlag;            /* 定义物理层L1发送错误标志,不能发送                */
  81          
  82          extern L3Pack xdata L3TxVar;            /* 网络层发送暂存变量,用户接口          */
  83          extern L3Pack xdata L3RxVar;            /* 网络层接收暂存变量,用户接口          */
  84          
  85          /********************************************************************************/
  86          /*  函数名称:void main(void)                                                    */
  87          /*  简要描述:主程序                                                             */
  88          /*                                                                              */
  89          /*  时    间:2002年02月21日                                                     */
  90          /********************************************************************************/
  91          void main(void)
  92          {
  93   1          uchar data i;
  94   1          uchar data temp;
  95   1          
  96   1          /* 中断控制 */
  97   1          EA  = 0;      
  98   1          ET0 = 1;
  99   1          ET1 = 0;
 100   1          EX0 = 1;
 101   1          EX1 = 1;
 102   1          ES  = 0;
 103   1          
 104   1          /* 定时器设置   */
 105   1          TMOD=0x01;                          /* 定时器0为定时模式1                   */
 106   1          TH0=0xd8;                           /* 设定定时器0初值,定时10ms             */
 107   1          TL0=0xf0;
 108   1      
 109   1          /* 指示灯预置   */
 110   1          ALARM_LED = OFF;
 111   1          COMM_LED  = OFF;
 112   1          RUN_LED  = OFF;
 113   1      
 114   1          /* 确定时隙     */
 115   1          if( BADD2==0 )
 116   1          {
 117   2              if( BADD1==0 )
C51 COMPILER V3.20,  SN-0  MDB                                                             05/14/03  11:30:42  PAGE 3   

 118   2              {
 119   3                  m_ucTimeSlot = SLOT7;
 120   3              }
 121   2              else
 122   2              {
 123   3                  m_ucTimeSlot = SLOT8;
 124   3              }
 125   2          }
 126   1          else
 127   1          {
 128   2              m_ucTimeSlot = SLOT9;
 129   2          }
 130   1      
 131   1          /* 清DSP复位       */  
 132   1          *(RESET+0) = 0x1;               /* b0写入1                              */     
 133   1          *(RESET+1) = 0x1;               /* b0写入1                              */     
 134   1          *(RESET+2) = 0x1;               /* b0写入1                              */     
 135   1          *(RESET+3) = 0x1;               /* b0写入1                              */     
 136   1      
 137   1          /* 测试 */
 138   1          TestSRAM();
 139   1          TestSAB82525();
 140   1          TestHPI(); 
 141   1      
 142   1          /* 定时器0计数清零  */
 143   1          m_ucTimer0Count = 0;
 144   1      
 145   1          /* 有消息需要发送标志清零 */    
 146   1          m_bSendMsgFlag = FALSE;
 147   1      
 148   1      
 149   1          /* 初始化HPI缓冲区及变量 */  
 150   1          InitHPI();             
 151   1          
 152   1          /* 初始化HDLC缓冲区及变量 */  
 153   1          InitHDLC();             
 154   1          
 155   1          /* 初始化HDLC芯片 */  
 156   1          InitSAB82525();
 157   1          
 158   1          /* 初始化交换网芯片 */  
 159   1          InitMT8985();
 160   1          
 161   1          /* 开中断   */    
 162   1          EA=1;                     
 163   1      
 164   1          /* 启动定时器T0 */
 165   1          TR0 = 1;
 166   1          
 167   1          /* 主循环       */     
 168   1          for(;;)
 169   1          {
 170   2              /* 指示灯控制   */
 171   2              if(m_ucTimer0Count > 50)
 172   2              {
 173   3                  RUN_LED = OFF;
 174   3                  if(m_ucTimer0Count > 100)
 175   3                  {
 176   4                      WATCHDOG = ~WATCHDOG;
 177   4      
 178   4                      m_ucTimer0Count = 0;
 179   4      
C51 COMPILER V3.20,  SN-0  MDB                                                             05/14/03  11:30:42  PAGE 4   

 180   4                              /* DSP运行状况监测 */
 181   4                              temp = REVISION&0x01;
 182   4                              if(temp == 0x1)
 183   4                              {
 184   5                                  CheckDSP();
 185   5                              }
 186   4                  }                     
 187   3              }
 188   2              else
 189   2              {
 190   3                  RUN_LED = ON;
 191   3              }
 192   2      
 193   2              /* 故障指示 */
 194   2              if( (m_bSRAMTestFlag == WRONG)      ||
 195   2                  (m_bHPITestFlag == WRONG)       ||
 196   2                  (m_bSAB82525TestFlag == WRONG)  ||
 197   2                  (m_bL1RxErrorFlag == WRONG)     ||
 198   2                  (m_bL1RxCRCFlag == WRONG)       ||
 199   2                  (m_bL3TxErrorFlag == WRONG)  )
 200   2              {
 201   3                  ALARM_LED = ON;
 202   3              }
 203   2              else
 204   2              {
 205   3                  ALARM_LED = OFF;
 206   3              }                                       
 207   2              
 208   2              /* HPI上报消息监测 */   
 209   2              CheckRxHPI();       /* 监测各DSP上报消息情况                */                   
 210   2      
 211   2              /* HDLC收发监测 */      
 212   2              CheckRxL3Layer();   /* 监测第三层接收情况函数               */    
 213   2              CheckTxL2Layer();   /* 监测第二层发送情况函数               */                   
 214   2              CheckRxL2Layer();   /* 监测第二层接收情况函数               */    
 215   2              CheckTxL1Layer();   /* 监测物理层发送情况函数               */                   
 216   2              CheckRxL1Layer();   /* 监测物理层接收情况函数               */    
 217   2          }
 218   1      }
 219          
 220          
 221          /********************************************************************************/
 222          /*  函数名称:void InitMT8985(void)                                              */
 223          /*  简要描述:初始化MT8985函数                                                   */
 224          /*                                     交换                                     */
 225          /*           HWI0的0-7时隙为信令时隙  ————> HWO1-4的0-1时隙                 */
 226          /*                                                                              */
 227          /*                                     交换                                     */
 228          /*           HWI0的8-23时隙为数据时隙 ————> HWO1-4的2-5时隙                 */
 229          /*                                                                              */
 230          /*                                     交换                                     */
 231          /*           HWI1-4的0-1时隙为信令时隙————> HWO0的0-7时隙                   */
 232          /*                                                                              */
 233          /*                                     交换                                     */
 234          /*           HWI1-4的2-5时隙为数据时隙————> HWO0的8-23时隙                  */
 235          /*                                                                              */
 236          /*  时    间:2000年11月04日                                                     */
 237          /********************************************************************************/
 238          void InitMT8985(void)
 239          {
 240   1          uchar data temp;
 241   1          uchar data i,j;
C51 COMPILER V3.20,  SN-0  MDB                                                             05/14/03  11:30:42  PAGE 5   

 242   1      
 243   1          WATCHDOG = ~WATCHDOG;
 244   1      
 245   1          /* 将MT8985所有输出关闭  */
 246   1          for(j=0;j<8;j++)
 247   1          {
 248   2              *(MT8985+WRITE+0x00) = (0x18+j);    /* 写CR,设置消息模式,对CMH/HW0-7读写    */
 249   2              for(i=0;i<0x20;i++)                 /* 写CMH                                */
 250   2              {
 251   3                  for(;;)
 252   3                  {
 253   4                      *(MT8985+WRITE+0x20+i) = 0x40;  /* 写入后再读出比较直至正确         */
 254   4                      temp=*(MT8985+READ+0x20+i);
 255   4                      if(temp==0x40)
 256   4                      {
 257   5                          break;
 258   5                      }
 259   4                  }
 260   3              }
 261   2          }
 262   1      
 263   1          /* 设置信令部分交换 */
 264   1          SetTimeSlot(1,0,0,0); 
 265   1          SetTimeSlot(1,1,0,1);
 266   1          SetTimeSlot(2,0,0,2);
 267   1          SetTimeSlot(2,1,0,3);
 268   1          SetTimeSlot(3,0,0,4);
 269   1          SetTimeSlot(3,1,0,5);
 270   1          SetTimeSlot(4,0,0,6);
 271   1          SetTimeSlot(4,1,0,7);
 272   1          SetTimeSlot(0,0,1,0);  
 273   1          SetTimeSlot(0,1,1,1);       
 274   1          SetTimeSlot(0,2,2,0);        
 275   1          SetTimeSlot(0,3,2,1);          
 276   1          SetTimeSlot(0,4,3,0);         
 277   1          SetTimeSlot(0,5,3,1);         
 278   1          SetTimeSlot(0,6,4,0);          
 279   1          SetTimeSlot(0,7,4,1);       
 280   1          
 281   1      
 282   1          /* 设置T120部分交换 */
 283   1          SetTimeSlot(1,2,0,8);
 284   1          SetTimeSlot(1,3,0,9);
 285   1          SetTimeSlot(1,4,0,10);
 286   1          SetTimeSlot(1,5,0,11);
 287   1          SetTimeSlot(2,2,0,12);
 288   1          SetTimeSlot(2,3,0,13);
 289   1          SetTimeSlot(2,4,0,14);

⌨️ 快捷键说明

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