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

📄 path_switch.lst

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   PATH_SWITCH                                                           03/10/2006 16:35:33 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PATH_SWITCH
OBJECT MODULE PLACED IN path_switch.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE path_switch.c LARGE OPTIMIZE(9,SIZE) BROWSE NOAREGS DEBUG OBJECTEXTEND

line level    source

   1          #include <REG54.H>
   2          #include "f2rc7860.h"
   3          #include "rc7860.h"
   4          #include "ep1k50.h"
   5          #include "cmd_para_save.h"
   6          
   7          unsigned char xdata path_switch_state[63] = {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
             -,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
   8          //通道倒换标志位,0主用到备用强制倒换,1备用到主用强制倒换,2自动倒换状态
   9          
  10          unsigned char xdata path_switch_array[4][63][4] = {{{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff
             -,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff
             -},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0x
             -ff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0x
             -ff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,
             -0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,
             -0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xf
             -f,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xf
             -f,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0
             -xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0
             -xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},
             -{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff
             -,0xff,0xff}},
  11                                                                                                     {{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff
             -},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0x
             -ff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0x
             -ff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,
             -0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,
             -0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xf
             -f,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xf
             -f,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0
             -xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0
             -xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},
             -{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff
             -,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff}},
  12                                                                                                             {{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0x
             -ff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,
             -0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,
             -0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xf
             -f,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xf
             -f,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0
             -xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0
             -xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},
             -{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff
             -,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff
             -},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0x
             -ff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff}},
  13                                                                                                         {{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0x
             -ff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,
             -0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,
             -0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xf
             -f,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xf
             -f,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0
             -xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0
             -xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},
C51 COMPILER V7.50   PATH_SWITCH                                                           03/10/2006 16:35:33 PAGE 2   

             -{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff
             -,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff
             -},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0x
             -ff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff}}};
  14          //光口保护倒换数组,第一维4表示哪个主用光口,第二维63表示时隙值,
  15          //第三维倒换信息:第1位表示备用光口、第2位表示被保护光口、第3位表示上行并发光口、第4位表示该主用光口连接状
             -态
  16          
  17          unsigned char xdata port_reg[63];
  18           
  19          unsigned char xdata bboardid;                                                           //备用盘号
  20          unsigned char xdata bportid;                                                            //备用端口号
  21          unsigned char xdata btimeid;                                                            //备用时隙号
  22          unsigned char xdata mboardid;                                                           //主用盘号
  23          unsigned char xdata mportid;                                                            //主用端口号
  24          unsigned char xdata mtimeid;                                                            //主用时隙号
  25          unsigned char xdata auto_path_port = 0xFF;
  26          
  27          extern unsigned long int xdata commandid;
  28          extern unsigned char xdata tx_buf[];
  29          extern unsigned char xdata tx_buf_pointer;
  30          extern bit tx_done;
  31          extern void SetResRdyTbl(unsigned char prio) large reentrant;
  32          extern unsigned char GetResRdyTbl(unsigned char prio) large reentrant;
  33          extern void SetExtRdyTbl(Uchar prio) large reentrant;
  34          extern unsigned char f2rc7860_rd(unsigned int f2addr) large reentrant;
  35          extern void f2rc7860_wr(unsigned int f2addr,unsigned char value) large reentrant;
  36          extern unsigned char xdata start_flg[4];
  37          
  38          extern unsigned char ais_reg[4][8];
  39          extern unsigned char xdata test_reg[24];
  40          extern unsigned char xdata init_temp;           //初始化完成标志位(即C82命令完成)
  41          
  42          unsigned char path_switch_function(unsigned char inport,unsigned char TU12ID,unsigned char outport) large 
             -reentrant {
  43   1      //通道倒换子函数
  44   1      volatile unsigned char return_value;
  45   1      unsigned char xdata *valueid;
  46   1      unsigned char xdata value;
  47   1      unsigned char xdata quotient;
  48   1      unsigned char xdata residue;
  49   1          
  50   1              quotient = TU12ID >> 3;                                                                         //得到该时隙所在的字节值(同timeid / 8运算)
  51   1              residue = TU12ID & 0x07;                                                                        //同timeid % 8运算
  52   1              residue = 7 - residue;                                                  //得到该时隙所在的bit位
  53   1      
  54   1              switch(inport){                                                                                         //判断被倒换的光口是否正常,可以倒换
  55   2                      case 0: valueid = (quotient + 0x88A6);
  56   2                      value = ((*valueid) >> residue) & 0x01;         //如果该时隙出现AIS
  57   2                                      if (value != 0){                                //该时隙不能倒换
  58   3                              return_value = 2; 
  59   3                                      }
  60   2                                      else{
  61   3                              PTUN(outport,TU12ID)=0;
  62   3                                              return_value = 0;
  63   3                      }
  64   2                                      break;
  65   2                  case 1: valueid = (quotient + 0x8AA6);
  66   2                      value = ((*valueid) >> residue) & 0x01;
  67   2                      if (value != 0){
  68   3                              return_value = 2;
  69   3                                      }
C51 COMPILER V7.50   PATH_SWITCH                                                           03/10/2006 16:35:33 PAGE 3   

  70   2                          else{
  71   3                              PTUN(outport,TU12ID) = 1;
  72   3                              return_value = 0;
  73   3                      }
  74   2                                      break;
  75   2              case 2: value = f2rc7860_rd(quotient + 0x00A6);
  76   2                                      value = (value >> residue) & 0x01;
  77   2                          if (value != 0){
  78   3                              return_value = 2; 
  79   3                                      }
  80   2                      else{
  81   3                              PTUN(outport,TU12ID)=2;
  82   3                              return_value = 0;
  83   3                          }
  84   2                                      break;
  85   2                  case 3: value = f2rc7860_rd(quotient + 0x02A6);
  86   2                                      value = (value >> residue) & 0x01;
  87   2                      if (value != 0){
  88   3                              return_value = 2;
  89   3                                      }
  90   2                          else{
  91   3                              PTUN(outport,TU12ID)=3;
  92   3                              return_value = 0;
  93   3                      }
  94   2                                      break;                    
  95   2                 default: return_value = 2;
  96   2                                      break;
  97   2         }
  98   1      
  99   1      /*      if (inport >= 0 & inport < 4){
 100   1                      PTUN(outport,TU12ID) = inport;
 101   1                      return_value = 0;
 102   1              }
 103   1              else return_value = 2;
 104   1      */      return (return_value);
 105   1      }
 106          
 107          unsigned char get_solt_working(unsigned char out_board,unsigned char out_port,unsigned char out_time){
 108   1      //取得所要查询的时隙的当前连接

⌨️ 快捷键说明

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