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

📄 path_switch.lst

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 LST
📖 第 1 页 / 共 5 页
字号:
 109   1      unsigned char xdata port;                       //1K50中的输出端口
 110   1      unsigned char xdata mport;                      //1K50中的输入端口
 111   1      
 112   1              switch(out_board){                              //将输出盘号端口号转换成为1K50中的输出端口号
 113   2                      case 1: port = 5;
 114   2                                      break;
 115   2                      case 2: port = 6;
 116   2                                      break;
 117   2                      case 3: port = 4;
 118   2                                      break;
 119   2                      case 4: if(out_port == 1){
 120   3                                              port = 2;
 121   3                                      }
 122   2                                      else port = 3;
 123   2                                      break;
 124   2                      case 5: if(out_port == 1){
 125   3                                              port = 0;
 126   3                                      }
 127   2                                      else port = 1;
 128   2                                      break;
 129   2                      default: break;
 130   2              }
 131   1              switch (port){                                                                          //得到1K50中的当前输入端口
C51 COMPILER V7.50   PATH_SWITCH                                                           03/10/2006 16:35:33 PAGE 4   

 132   2                      case 0: mport = XBYTE[0x8C00 + out_time - 1];
 133   2                                      break;
 134   2                      case 1: mport = XBYTE[0x8C40 + out_time - 1];
 135   2                                      break;
 136   2                      case 2: mport = XBYTE[0x8C80 + out_time - 1];
 137   2                                      break;
 138   2                      case 3: mport = XBYTE[0x8CC0 + out_time - 1];
 139   2                                      break;
 140   2                      case 4: mport = XBYTE[0x8D00 + out_time - 1];
 141   2                                      break;
 142   2                      case 5: mport = XBYTE[0x8D40 + out_time - 1];
 143   2                                      break;
 144   2                      case 6: mport = XBYTE[0x8D80 + out_time - 1];
 145   2                                      break;
 146   2                      default: break;
 147   2          }
 148   1              return (mport);
 149   1      }
 150          
 151          
 152          unsigned char get_path_switch(struct cmd_para_save *path_switch){
 153   1      //C50 MCP读取通道倒换情况
 154   1      unsigned char xdata boardid;
 155   1      unsigned char xdata portid;
 156   1      unsigned char xdata timeid;
 157   1      unsigned char xdata mport;
 158   1      unsigned char xdata return_value;
 159   1      
 160   1              boardid = path_switch -> path_table_swget_board;                        //输出盘号
 161   1              portid = path_switch -> path_table_swget_port;                          //输出端口号
 162   1              timeid = path_switch -> path_table_swget_slot;                          //输出时隙
 163   1              btimeid = timeid;
 164   1      
 165   1              if (timeid > 0 & timeid < 64){
 166   2                      mport = get_solt_working(boardid,portid,timeid);                //得到所保护的输出时隙的输入端口
 167   2                      switch (path_switch_array[mport][timeid - 1][0]){               //转换主用表中的端口信息上报MCP
 168   3                              case 0: bboardid = 5;
 169   3                                              bportid = 1;
 170   3                                              return_value = 0;
 171   3                                              break;
 172   3                              case 1: bboardid = 5;
 173   3                                              bportid = 2;
 174   3                                              return_value = 0;
 175   3                                              break;
 176   3                              case 2: bboardid = 4;
 177   3                                              bportid = 1;
 178   3                                              return_value = 0;
 179   3                                              break;
 180   3                              case 3: bboardid = 4;
 181   3                                              bportid = 2;
 182   3                                              return_value = 0;
 183   3                                              break;
 184   3                              case 0xff: bboardid = 0;
 185   3                                              bportid = 0;
 186   3                                              return_value = 0;
 187   3                                              break;
 188   3                              default:bboardid = 0;
 189   3                                              bportid = 0;
 190   3                                              return_value = 0;
 191   3                                              break;
 192   3                      }
 193   2              }
C51 COMPILER V7.50   PATH_SWITCH                                                           03/10/2006 16:35:33 PAGE 5   

 194   1              else return_value = 2;
 195   1              if (!GetResRdyTbl(21))
 196   1                      SetResRdyTbl(21); 
 197   1              return (return_value);
 198   1      }
 199          
 200          void report_path_switch_table(unsigned char value,unsigned char bboard,unsigned char bport,unsigned char b
             -time){
 201   1      //C50回应函数
 202   1              tx_buf[0] = '$';
 203   1              tx_buf[1] = '2';
 204   1              tx_buf[2] = '1';
 205   1              tx_buf[3] = 0x43;
 206   1              tx_buf[4] = 0x35;
 207   1              tx_buf[5] = 0x30;
 208   1              tx_buf[6] = '0';
 209   1              tx_buf[7] = '0';
 210   1              tx_buf[8] = '0';
 211   1              tx_buf[9] = '7';
 212   1              tx_buf[10] = value + 0x30;
 213   1              tx_buf[11] = bboard + 0x30;
 214   1              if (bboard == 5){
 215   2                      tx_buf[12] = '1';
 216   2              }
 217   1              else if(bboard == 4){
 218   2                      tx_buf[12] = '4';
 219   2              }
 220   1              else tx_buf[12] = '0';
 221   1              tx_buf[13] = '0';
 222   1              tx_buf[14] = bport + 0x30;
 223   1              tx_buf[15] = (btime / 10) + 0x30;
 224   1              tx_buf[16] = (btime % 10) + 0x30;
 225   1              tx_buf[17] = '*';
 226   1              tx_buf_pointer = 0;     
 227   1              while(tx_buf[tx_buf_pointer] != '*'){
 228   2                      SBUF = tx_buf[tx_buf_pointer];
 229   2                      while(tx_done == 0);
 230   2                      tx_done = 0;
 231   2                      tx_buf_pointer++;
 232   2              }
 233   1              SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
 234   1              while(tx_done == 0);
 235   1              tx_done = 0;
 236   1      
 237   1      }
 238          
 239          
 240          unsigned char set_path_switch(struct cmd_para_save *path_switch){
 241   1      //C51 设置通道倒换表
 242   1      unsigned char xdata boardid;
 243   1      unsigned char xdata portid;
 244   1      unsigned char xdata timeid;
 245   1      unsigned char xdata port;
 246   1      unsigned char xdata bboardid2;
 247   1      unsigned char xdata bportid2;
 248   1      unsigned char xdata btimeid2;
 249   1      unsigned char xdata mport;
 250   1      unsigned char xdata return_value;
 251   1      
 252   1              commandid = 0x00433531;
 253   1              boardid = path_switch -> path_table_swset_board;                //输出盘号
 254   1              portid = path_switch -> path_table_swset_port;                  //输出端口号
C51 COMPILER V7.50   PATH_SWITCH                                                           03/10/2006 16:35:33 PAGE 6   

 255   1              timeid = path_switch -> path_table_swset_slot;                  //输出时隙号
 256   1              bboardid = path_switch -> path_table_swset_Bboard;              //备用盘号(下行光口发2M收)
 257   1              bportid = path_switch -> path_table_swset_Bport;                //备用端口号(下行光口发2M收)
 258   1              btimeid = path_switch -> path_table_swset_Bslot;                //备用时隙号(下行光口发2M收)
 259   1              bboardid2 = path_switch -> path_table_swset_Bboard2;    //备用盘号(上行2M发光口收)
 260   1              bportid2 = path_switch -> path_table_swset_Bport2;              //备用端口号(上行2M发光口收)
 261   1              btimeid2 = path_switch -> path_table_swset_Bslot2;              //备用时隙号(上行2M发光口收)
 262   1      
 263   1              if (timeid > 0 & timeid < 64){
 264   2                      mport = get_solt_working(boardid,portid,timeid);        //得到所保护的输出时隙的输入端口
 265   2      
 266   2                      switch (bboardid){                                                                      //得到备用端口在1K50上的端口值
 267   3                              case 0: bportid = 0xff;
 268   3                                              break;
 269   3                              case 4: if (bportid == 1){
 270   4                                              bportid = 2;

⌨️ 快捷键说明

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