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

📄 test.lst

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 LST
📖 第 1 页 / 共 5 页
字号:
 391   5                                              f2rc7860_wr(F2Intmask2_a,inter_reg[2][2]);
 392   5                                              inter_reg[2][2] &= 0xE0;
 393   5                                              if (inter_reg[2][2] != 0){
 394   6                                                      init_recover[2] = 1;
 395   6                                                      path_switch_otba();
 396   6              //                                      SetExtRdyTbl(5);
 397   6                                              }
 398   5                                      }
 399   4                                      if (inter_reg[2][3] != 0){
 400   5              //                              f2rc7860_wr(F2Intmask3_a,inter_reg[2][3]);
 401   5                                              inter_reg[2][3] &= 0x80;
 402   5                                              if (inter_reg[2][3] != 0){
 403   6                                                      init_recover[2] = 1;
 404   6                                                      path_switch_otba_tu();
 405   6                                                      SetExtRdyTbl(6);
 406   6                                              }
 407   5                                      }
 408   4                              }
 409   3              
 410   3                              if (f2int_reg & 0x0F){                          //光分支盘B口中断处理
 411   4                                      for (i = 0; i <= 7; i++){               //取出63个时隙的AIS寄存器值
 412   5                                              ais_reg[3][i] |= f2rc7860_rd(i + 0x02A6);
 413   5                                      }
 414   4                                      if ((inter_reg[3][0] & 0xDA) | (inter_reg[3][2] & 0xE0) | (inter_reg[3][3] & 0x80)){
 415   5                                              intflg_OTBB = 1;
 416   5                                      }
 417   4                                      if (inter_reg[3][0] != 0){
 418   5                                              f2rc7860_wr(F2Intmask0_b,inter_reg[3][0]);
 419   5                                              inter_reg[3][0] &= 0xD0;        //取出可发生自动倒换的bit位
 420   5                                              if (inter_reg[3][0] != 0){
 421   6                                                      init_recover[3] = 1;
 422   6                                                      path_switch_otbb();
 423   6              //                                      SetExtRdyTbl(7);
 424   6                                              }
 425   5                                      }
 426   4                                      if (inter_reg[3][1] != 0){
C51 COMPILER V7.50   TEST                                                                  03/10/2006 16:35:17 PAGE 8   

 427   5                                              f2rc7860_wr(F2Intmask1_b,inter_reg[3][1]);
 428   5                                      }
 429   4                                      if (inter_reg[3][2] != 0){
 430   5                                              f2rc7860_wr(F2Intmask2_b,inter_reg[3][2]);
 431   5                                              inter_reg[3][2] &= 0xE0;
 432   5                                              if (inter_reg[3][2] != 0){
 433   6                                                      init_recover[3] = 1;
 434   6                                                      path_switch_otbb();
 435   6              //                                      SetExtRdyTbl(7);
 436   6                                              }
 437   5                                      }
 438   4                                      if (inter_reg[3][3] != 0){
 439   5              //                              f2rc7860_wr(F2Intmask3_b,judge3);
 440   5                                              inter_reg[3][3] &= 0x80;
 441   5                                              if (inter_reg[3][3] != 0){
 442   6                                                      init_recover[3] = 1;
 443   6                                                      path_switch_otbb_tu();
 444   6                                                      SetExtRdyTbl(8);
 445   6                                              }
 446   5                                      }
 447   4                              }
 448   3                      f2rc7860_wr(F2Int_mask,0);
 449   3                      }
 450   2              }
 451   1      
 452   1              if (int_reg == 0){      //检测出中断信号漏检以后再次进行倒换
 453   2                      SetExtRdyTbl(2);
 454   2                      SetExtRdyTbl(4);
 455   2                      if ((start_flg[0] == 0) && (f2int_reg == 0)){
 456   3                              SetExtRdyTbl(6);
 457   3                              SetExtRdyTbl(8);
 458   3                      }
 459   2      //              test_reg[1] = test_reg[0] = 0;  //检测变量重新清零
 460   2              }
 461   1      
 462   1      //      SetExtRdyTbl(15);                                       //每秒查询改写2M盘的AIS速率
 463   1              Rdint_clr = 0x40;                                       //清除MCB盘的Ia3_a与Ia3_b中断位
 464   1              f2rc7860_wr(F2Rdint_clr,0x40);          //清除OTB盘的F2Ia3_a与F2Ia3_b中断位
 465   1              Int_mask = 0;   
 466   1              SetExtRdyTbl(17);                                       //进行时钟频偏检测程序
 467   1      //      SetResRdyTbl(41);                                       //打印中断次数
 468   1      
 469   1      }
 470          /****************************************************************************************
 471          void service_int0(void) interrupt 0 using 1{
 472          volatile unsigned char int_reg;
 473          volatile unsigned char judge;
 474          volatile unsigned char judge1;
 475          volatile unsigned char judge2;
 476          volatile unsigned char judge3;
 477          volatile unsigned char temp,temp1,temp2;
 478                  
 479                  for (temp = 0; temp <= 7; temp++){                              //取出63个时隙的AIS寄存器值
 480                          ais_reg[0][temp] = XBYTE[temp + 0x88A6];
 481                          ais_reg[1][temp] = XBYTE[temp + 0x8AA6];
 482                          if (start_flg[0] == 0){
 483                                  ais_reg[2][temp] = f2rc7860_rd(temp + 0x00A6);
 484                                  ais_reg[3][temp] = f2rc7860_rd(temp + 0x02A6);
 485                          }
 486                  }
 487                  for (temp = 0; temp <= 3; temp++){                              //取出4个光口的中断寄存器值
 488                          inter_reg[0][temp] = XBYTE[temp + 0x88B5];
C51 COMPILER V7.50   TEST                                                                  03/10/2006 16:35:17 PAGE 9   

 489                          inter_reg[1][temp] = XBYTE[temp + 0x8AB5];
 490                          if (start_flg[0] == 0){
 491                                  inter_reg[2][temp] = f2rc7860_rd(temp + 0x00B5);
 492                                  inter_reg[3][temp] = f2rc7860_rd(temp + 0x02B5);
 493                          }
 494                  }
 495          
 496                  int_reg = Int_vec;
 497                  temp = int_reg & 0xF0;
 498                  if (temp){
 499                          for (temp = 0; temp <= 7; temp++){                              //取出63个时隙的AIS寄存器值
 500                                  ais_reg[0][temp] |= XBYTE[temp + 0x88A6];
 501                          }
 502                          temp = inter_reg[0][0] & 0xDA;
 503                          temp1 = inter_reg[0][2] & 0xE0;
 504                          temp2 = inter_reg[0][3] & 0x80;
 505                          if (temp | temp1 | temp2){
 506                                  intflg_MCBA = 1;                                //计算误码秒的标志位
 507                          }
 508                          if (inter_reg[0][0] != 0){
 509                                  Intmask0_a = inter_reg[0][0];
 510                                  inter_reg[0][0] &= 0xD0;                                        //取出可发生自动倒换的bit位
 511                                  if (inter_reg[0][0] != 0){
 512                                          init_recover[0] = 1;
 513                                          path_switch_mcba();
 514          //                              SetExtRdyTbl(1);
 515                                  }
 516                          }
 517                          if (inter_reg[0][1] != 0){
 518                                  Intmask1_a = inter_reg[0][1];
 519                          }
 520                          if (inter_reg[0][2] != 0){
 521                                  Intmask2_a = inter_reg[0][2];
 522                                  inter_reg[0][2] &= 0xE0;
 523                                  if (inter_reg[0][2] != 0){
 524          //                              SetExtRdyTbl(1);
 525                                          init_recover[0] = 1;
 526                                          path_switch_mcba();
 527                                  }
 528                          }
 529                          if (inter_reg[0][3] != 0){
 530          //                      Intmask3_a = judge3;
 531                                  inter_reg[0][3] &= 0x80;
 532                                  if (inter_reg[0][3] != 0){
 533                                          test_reg[0] += 1;
 534                                          init_recover[0] = 1;
 535                                          path_switch_mcba_tu();
 536                                          SetExtRdyTbl(2);
 537                                  }
 538                          }
 539                  }
 540          
 541                  temp = int_reg & 0x0F;
 542                  if (temp){
 543                          for (temp = 0; temp <= 7; temp++){                              //取出63个时隙的AIS寄存器值
 544                                  ais_reg[1][temp] |= XBYTE[temp + 0x8AA6];
 545                          }
 546                          temp = inter_reg[1][0] & 0xDA;
 547                          temp1 = inter_reg[1][2] & 0xE0;
 548                          temp2 = inter_reg[1][3] & 0x80;
 549                          if (temp | temp1 | temp2){
 550                                  intflg_MCBB = 1;
C51 COMPILER V7.50   TEST                                                                  03/10/2006 16:35:17 PAGE 10  

 551                          }
 552                          if (inter_reg[1][0] != 0){
 553                                  Intmask0_b = inter_reg[1][0];
 554                                  inter_reg[1][0] &= 0xD0;                                        //取出可发生自动倒换的bit位
 555                                  if (inter_reg[1][0] != 0){
 556                                          test_reg[1] += 1;
 557                                          init_recover[1] = 1;
 558                                          path_switch_mcbb();
 559          //                              SetExtRdyTbl(3);
 560                                  }
 561                          }
 562                          if (inter_reg[1][1] != 0){
 563                                  Intmask1_b = inter_reg[1][1];
 564                          }
 565                          if (inter_reg[1][2] != 0){
 566                                  Intmask2_b = inter_reg[1][2];
 567                                  inter_reg[1][2] &= 0xE0;
 568                                  if (inter_reg[1][2] != 0){
 569          //                              SetExtRdyTbl(3);
 570                                          init_recover[1] = 1;
 571                                          path_switch_mcbb();
 572                                  }
 573                          }
 574                          if (inter_reg[1][3] != 0){
 575          //                      Intmask3_b = judge3;
 576                                  inter_reg[1][3] &= 0x80;
 577                                  if (inter_reg[1][3] != 0){
 578                                          init_recover[1] = 1;
 579                                          path_switch_mcbb_tu();
 580                                          SetExtRdyTbl(4);
 581                                  }
 582                          }
 583                  }
 584          
 585          //      Rdint_clr = 0x40;                                       //清除MCB盘的Ia3_a与Ia3_b中断位
 586          //      judge = int_flg & 0x04;
 587          //      if (judge == 0x04){
 588                  if (f2rc7820_rd(F2Int_reg)){
 589                          f2rc7820_wr(F2Encrypt_reg,0xAA);       //open 7820 write reg
 590                          f2rc7820_wr(F2Intmask_reg,0xFF);

⌨️ 快捷键说明

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