📄 test.lst
字号:
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 + -