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

📄 performance.c

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 C
📖 第 1 页 / 共 5 页
字号:
    temp = (temp << 8) + f2rc7860_rd(F2SohB1e_countl8_a);		//得到B1的低8位计数值                                         
    B1[2] = temp;												//将B1计数器值存入变量
    if ((f2rc7860_rd(F2Intmask0_a) & 0xDA) | (f2rc7860_rd(F2Intmask2_a) & 0xE0) | (f2rc7860_rd(F2Intmask3_a) & 0x80)){	//判断告警是否存在
    	dflg = 1;                                                                                                                         
    }                                                                                                                                         
	else dflg = 0;                                                                                                                   
    if (dflg | intflg_OTBA){									//判断该秒是否误块秒                      
       	default_155M[2] = 1;                                                                                                                         
    }                                                                                                                                         
    else default_155M[2] = 0;
	intflg_OTBA = 0;
    temp = f2rc7860_rd(F2SohB2e_counth8_a);						//得到B2的高8位计数值                                                                                                                                             
    temp = (temp << 8) + f2rc7860_rd(F2SohB2e_countl8_a);		//得到B2的低8位计数值                                         
    B2[2] = temp;												//将B2的计数值存入变量
    temp = f2rc7860_rd(F2SohM1e_counth8_a);						//得到M1即MS-REI的高8位计数值                 
    temp = (temp << 8) + f2rc7860_rd(F2SohM1e_countl8_a);		//得到M1即MS-REI的低8位计数值                                 
    REI_MS[2] += temp;											//将M1即MS-REI的计数值存入变量
    REI_MS_15min[2] += temp;
	check_alarm_otb[1] &= 0xBF;									//清除告警字
	if (REI_MS_15min[2] > REI_MS_MAX[2]){						//判断MS-REI是否过限
		check_alarm_otb[1] |= 0x40;								//写告警字
	}
    temp = f2rc7860_rd(F2PohB3e_counth7_a) & 0x7F;				//得到B3的高7位计数值                                                                                                                                         
    temp = (temp <<	8) + f2rc7860_rd(F2PohB3e_countl8_a);		//得到B3的低8位计数值                                         
    B3[2] = temp;												//将B3的计数值存入变量
    temp = f2rc7860_rd(F2Pohrei_counth7_a) & 0x7F;				//得到HP的REI高7位计数值                      
    temp = (temp << 8) + f2rc7860_rd(F2Pohrei_countl8_a);		//得到HP的REI低8位计数值                              
    REI_HP[2] += temp;											//将HP_REI的值存入变量
    REI_HP_15min[2] += temp;
    check_alarm_otb[1] &= 0xDF;									//清除告警字
	if (REI_HP_15min[2] > REI_HP_MAX[2]){						//判断HP-REI是否过限
		check_alarm_otb[1] |= 0x20;								//写告警字
	}
    temp = f2rc7860_rd(F2Sohpfm_rx_a) & 0x80;					//得到OFS的标志位                     
    OFS[2] += temp >> 7; 										//对OFS变量进行累加   
    OFS_15min[2] += temp >> 7;
    check_alarm_otb[1] &= 0x7F;									//清除告警字
	if (OFS_15min[2] > OFS_MAX[2]){								//判断OFS是否过限
		check_alarm_otb[1] |= 0x80;								//写告警字
	}
	temp = f2rc7860_rd(F2Pjerx_count_a);
    PJC_HP[2] += temp;											//将正指针调整事件计数存入变量                
    PJC_HP_15min[2] += temp;
    check_alarm_otb[1] &= 0xEF;									//清除告警字
	if (PJC_HP_15min[2] > PJC_HP_MAX[2]){						//判断PJC是否过限
		check_alarm_otb[1] |= 0x10;								//写告警字
	}
	temp = f2rc7860_rd(F2Njerx_count_a);
    NJC_HP[2] += temp;											//将负指针调整事件计数存入变量                
    NJC_HP_15min[2] += temp;
	check_alarm_otb[1] &= 0xF7;									//清除告警字
	if (NJC_HP_15min[2] > NJC_HP_MAX[2]){						//判断NJC是否过限
		check_alarm_otb[1] |= 0x08;								//写告警字
	}
//收集OTB盘B口的性能值                                                                        
	temp = f2rc7860_rd(F2SohB1e_counth8_b);						//得到B1的高8位计数值                                     
    temp = (temp << 8) + f2rc7860_rd(F2SohB1e_countl8_b);		//得到B1的低8位计数值                                                     
    B1[3] = temp;												//将B1计数器值存入变量            
    if ((f2rc7860_rd(F2Intmask0_b) & 0xDA) | (f2rc7860_rd(F2Intmask2_b) & 0xE0) | (f2rc7860_rd(F2Intmask3_b) & 0x80)){	//判断告警是否存在
       	dflg = 1;                                                                                                                         
    }                                                                                                                                         
	else dflg = 0;                                                                                                                   
    if (dflg | intflg_OTBB){									//判断该秒是否误块秒                      
   		default_155M[3] = 1;                                                                                                                         
    }                                                                                                                                         
    else default_155M[3] = 0;
	intflg_OTBB = 0;
    temp = f2rc7860_rd(F2SohB2e_counth8_b);						//得到B2的高8位计数值                                                                                                                                             
    temp = (temp << 8) + f2rc7860_rd(F2SohB2e_countl8_b);		//得到B2的低8位计数值                                         
    B2[3] = temp;												//将B2的计数值存入变量
    temp = f2rc7860_rd(F2SohM1e_counth8_b);						//得到M1即MS-REI的高8位计数值                 
    temp = (temp << 8) + f2rc7860_rd(F2SohM1e_countl8_b);		//得到M1即MS-REI的低8位计数值                                 
    REI_MS[3] += temp;											//将M1即MS-REI的计数值存入变量
    REI_MS_15min[3] += temp;
    check_alarm_otb[2] &= 0xBF;									//清除告警字
	if (REI_MS_15min[3] > REI_MS_MAX[3]){						//判断MS-REI是否过限
		check_alarm_otb[2] |= 0x40;								//写告警字
	}
    temp = f2rc7860_rd(F2PohB3e_counth7_b) & 0x7F;				//得到B3的高7位计数值                                                                                                                                       
    temp = (temp <<	8) + f2rc7860_rd(F2PohB3e_countl8_b);		//得到B3的低8位计数值                                         
    B3[3] = temp;												//将B3的计数值存入变量
    temp = f2rc7860_rd(F2Pohrei_counth7_b) & 0x7F;				//得到HP的REI高7位计数值                              
    temp = (temp << 8) + f2rc7860_rd(F2Pohrei_countl8_b);			//得到HP的REI低8位计数值                              
    REI_HP[3] += temp;											//将HP_REI的值存入变量        
    REI_HP_15min[3] += temp;
    check_alarm_otb[2] &= 0xDF;									//清除告警字
	if (REI_HP_15min[3] > REI_HP_MAX[3]){						//判断HP-REI是否过限
		check_alarm_otb[2] |= 0x20;								//写告警字
	}                                    
    temp = f2rc7860_rd(F2Sohpfm_rx_b) & 0x80;					//得到OFS的标志位                                                                                      
    OFS[3] += temp >> 7; 										//对OFS变量进行累加
    OFS_15min[3] += temp >> 7;
    check_alarm_otb[2] &= 0x7F;									//清除告警字
	if (OFS_15min[3] > OFS_MAX[3]){								//判断OFS是否过限
		check_alarm_otb[2] |= 0x80;								//写告警字
	}
	temp = f2rc7860_rd(F2Pjerx_count_b);
    PJC_HP[3] += temp;											//将正指针调整事件计数存入变量             
    PJC_HP_15min[3] += temp;
	check_alarm_otb[2] &= 0xEF;									//清除告警字
	if (PJC_HP_15min[3] > PJC_HP_MAX[3]){						//判断PJC是否过限
		check_alarm_otb[2] |= 0x10;								//写告警字
	}
	temp = f2rc7860_rd(F2Njerx_count_b);
    NJC_HP[3] += temp;											//将负指针调整事件计数存入变量             
    NJC_HP_15min[3] += temp;
	check_alarm_otb[2] &= 0xF7;									//清除告警字
	if (NJC_HP_15min[3] > NJC_HP_MAX[3]){						//判断NJC是否过限
		check_alarm_otb[2] |= 0x08;								//写告警字
	}

	f2rc7860_wr(F2Rdint_clr,0x80);								//清除OTB一些计数器的值
	}
	
//收集3个2M盘的性能值
	for (num = 0; num <= 2; num++){								//设置2M盘的循环体,num表示盘号
		if (start_flg[num + 1] == 0){
//		if (timeslot_2M[num][0])
			k = 0;
			for (i = 0; i < 5; i++)///批注:此处循环需要改正,(i<3,j<7)
			{
				for (j = 0; j < 4; j++)
				{
					EB_2M[num][k] = se0111_reg_rd(Bip2_Arx_count_0H + (i * 8),Bip2_Arx_count_0L + (j * 0x30),num + 1);//??此循环要重写。另外,需处理8位的Bip2_Arx_count对应16位数据问题	//取得支路的BIP-2的计数值
			        temp = se0111_reg_rd(Rei_Arx_count_0H + (i * 8),Rei_Arx_count_0L + (j * 0x30),num + 1);		//取得支路的REI计数值                                                                
			        REI_2M[num][k] += temp;                                                                        
			        REI_2M_15min[num][k] += temp;
			        temp = se0111_reg_rd(Pj_Arx_count_0H + (i * 8),Pj_Arx_count_0L + (j * 0x30),num + 1);			//得到支路1的指针调整计数值          
			        NJC_2M[num][k] += temp & 0x000F;                                                                    
			        NJC_2M_15min[num][k] += temp & 0x000F;
					PJC_2M[num][k] += temp >> 4;                                                                        
			        PJC_2M_15min[num][k] += temp >> 4;
					k += 1;
				}
			}

			EB_2M[num][20] = se0111_reg_rd(Bip2_Arx_count_20H,Bip2_Arx_count_20L,num + 1);//??(同上)Bip2_Arx_count_20H的对应问题	//取得支路21的BIP-2的计数值                                  
			temp = se0111_reg_rd(Rei_Arx_count_20H,Rei_Arx_count_20L,num + 1);          
	        REI_2M[num][20] += temp;                                         
	        REI_2M_15min[num][20] += temp;
			temp = se0111_reg_rd(Pj_Arx_count_20H,Pj_Arx_count_20L,num + 1);          
	        NJC_2M[num][20] += temp & 0x000F;                              
	        NJC_2M_15min[num][20] += temp & 0x000F;
			PJC_2M[num][20] += temp >> 4;                                  
	        PJC_2M_15min[num][20] += temp >> 4;

/************************************************************************************************
			EB_2M[num][0] = se0111_reg_rd(Bip2_Arx_count_0H,Bip2_Arx_count_0L,num + 1);	//取得支路1的BIP-2的计数值
//		else EB_2M[num][0] = 0;
//		if (timeslot_2M[num][1])
			EB_2M[num][1] = se0111_reg_rd(Bip2_Arx_count_1H,Bip2_Arx_count_1L,num + 1);	//取得支路2的BIP-2的计数值                                                                
//		else EB_2M[num][1] = 0;
//		if (timeslot_2M[num][2])
	        EB_2M[num][2] = se0111_reg_rd(Bip2_Arx_count_2H,Bip2_Arx_count_2L,num + 1);	                             
//		else EB_2M[num][2] = 0;
//		if (timeslot_2M[num][3])
	        EB_2M[num][3] = se0111_reg_rd(Bip2_Arx_count_3H,Bip2_Arx_count_3L,num + 1);
//		else EB_2M[num][3] = 0;
//		if (timeslot_2M[num][4])
	        EB_2M[num][4] = se0111_reg_rd(Bip2_Arx_count_4H,Bip2_Arx_count_4L,num + 1);
//		else EB_2M[num][4] = 0;
//		if (timeslot_2M[num][5])
	        EB_2M[num][5] = se0111_reg_rd(Bip2_Arx_count_5H,Bip2_Arx_count_5L,num + 1);                                 
//		else EB_2M[num][5] = 0;
//		if (timeslot_2M[num][6])
	        EB_2M[num][6] = se0111_reg_rd(Bip2_Arx_count_6H,Bip2_Arx_count_6L,num + 1);                                 
//		else EB_2M[num][6] = 0;
//		if (timeslot_2M[num][7])
	        EB_2M[num][7] = se0111_reg_rd(Bip2_Arx_count_7H,Bip2_Arx_count_7L,num + 1);
//		else EB_2M[num][7] = 0;
//		if (timeslot_2M[num][8])
	        EB_2M[num][8] = se0111_reg_rd(Bip2_Arx_count_8H,Bip2_Arx_count_8L,num + 1);                                 
//		else EB_2M[num][8] = 0;
//		if (timeslot_2M[num][9])
	        EB_2M[num][9] = se0111_reg_rd(Bip2_Arx_count_9H,Bip2_Arx_count_9L,num + 1);                                
//		else EB_2M[num][9] = 0;
//		if (timeslot_2M[num][10])
	        EB_2M[num][10] = se0111_reg_rd(Bip2_Arx_count_10H,Bip2_Arx_count_10L,num + 1);                                 
//		else EB_2M[num][10] = 0;
//		if (timeslot_2M[num][11])
	        EB_2M[num][11] = se0111_reg_rd(Bip2_Arx_count_11H,Bip2_Arx_count_11L,num + 1);                                  
//		else EB_2M[num][11] = 0;
//		if (timeslot_2M[num][12])
	        EB_2M[num][12] = se0111_reg_rd(Bip2_Arx_count_12H,Bip2_Arx_count_12L,num + 1);                                  
//		else EB_2M[num][12] = 0;
//		if (timeslot_2M[num][13])
	        EB_2M[num][13] = se0111_reg_rd(Bip2_Arx_count_13H,Bip2_Arx_count_13L,num + 1);                                 
//		else EB_2M[num][13] = 0;
//		if (timeslot_2M[num][14])

⌨️ 快捷键说明

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