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

📄 timeslot_handle.c

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 C
📖 第 1 页 / 共 3 页
字号:
					 break;
			case 17: inporth=0x06;
	    		     inportl=0x61;
					 break;
			case 18: inporth=0x06;
	    		     inportl=0x81;
					 break;
			case 19: inporth=0x06;
	    		     inportl=0xA1;
					 break;
			case 20: inporth=0x06;
	    		     inportl=0xC1;
					 break;
			case 21: inporth=0x06;
	    		     inportl=0xE1;
					 break;
			default: break;
		}
/*
		switch (tsset_Sport){                          //得出Mapper中的上行支路号
    		case 1: inporth=0;
	        		inportl=0x4D;
					break;
			case 2: inporth=0;
	    		    inportl=0x7D;
					break;
			case 3: inporth=0;
	    		    inportl=0xAD;
					break;
			case 4: inporth=0;
	    		    inportl=0xDD;
					break;
			case 5: inporth=0x08;
	    		    inportl=0x4D;
					break;
			case 6: inporth=0x08;
	    		    inportl=0x7D;
					break;
			case 7: inporth=0x08;
	    		    inportl=0xAD;
					break;
			case 8: inporth=0x08;
	    		    inportl=0xDD;
					break;
			case 9: inporth=0x10;
	        		inportl=0x4D;
					break;
			case 10: inporth=0x10;
	        		 inportl=0x7D;
					 break;
			case 11: inporth=0x10;
	    		     inportl=0xAD;
					 break;
			case 12: inporth=0x10;
	    		     inportl=0xDD;
					 break;
			case 13: inporth=0x18;
	    		     inportl=0x4D;
					 break;
			case 14: inporth=0x18;
	    		     inportl=0x7D;
					 break;
			case 15: inporth=0x18;
	    		     inportl=0xAD;
					 break;
			case 16: inporth=0x18;
	    		     inportl=0xDD;
					 break;
			case 17: inporth=0x20;
	    		     inportl=0x4D;
					 break;
			case 18: inporth=0x20;
	    		     inportl=0x7D;
					 break;
			case 19: inporth=0x20;
	    		     inportl=0xAD;
					 break;
			case 20: inporth=0x20;
	    		     inportl=0xDD;
					 break;
			case 21: inporth=0x28;
	    		     inportl=0x4D;
					 break;
			default: break;
		}
*/

		switch (tsset_Dport){                           //得出EOS中的下行支路号
			case 1: outport = 0x07;
					break;
			case 2: outport = 0x08;
					break;
			case 3: outport = 0x09;
					break;
			case 4: outport = 0x0A;
					break;
			case 5: outport = 0x0B;
					break;
			default:break;
		}
		switch (tsset_Sport){                          //得出EOS中的上行支路号
    		case 1: inport = 0x01;
					break;
    		case 2: inport = 0x02;
					break;
    		case 3: inport = 0x03;
					break;
    		case 4: inport = 0x04;
					break;
    		case 5: inport = 0x05;
					break;
			default:break;
		}

	switch (tsset_Sboard){
	    case 5: switch (tsset_Dboard){                 			//源盘为MCB盘
		        	case 5: if (tsset_Dport == 1)
								PTUN(0,tsset_Dslot-1) = 0xFF;   //output 光口 0
							else PTUN(1,tsset_Dslot-1) = 0xFF;  //output 光口 1
							return_value=0;                		//返回值0成功
							break;
					case 4: if (tsset_Dport == 1)
								PTUN(2,tsset_Dslot-1) = 0xFF;   //output 光口 2
							else PTUN(3,tsset_Dslot-1) = 0xFF;  //output 光口 3
							return_value = 0;
							break;
					case 3: PTUN(4,tsset_Dslot-1) = 0xFF;
							if (tsset_Dtype == 2){
								se0111_reg_wr(outporth,outportl,0,3);//删除Mapper中的下行支路
								timeslot_2M[2][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Dtype == 3){
								se0121_reg_wr(outport,0,3);
							}
							return_value=0;
							break;
					case 2: PTUN(6,tsset_Dslot-1) = 0xFF;     
							if (tsset_Dtype == 2){
								se0111_reg_wr(outporth,outportl,0,2);//删除Mapper中的下行支路
								timeslot_2M[1][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Dtype == 3){
								se0121_reg_wr(outport,0,2);
							}
							return_value=0;
							break;
		            case 1: PTUN(5,tsset_Dslot-1) = 0xFF;
							if (tsset_Dtype == 2){
								se0111_reg_wr(outporth,outportl,0,1);//删除Mapper中的下行支路
								timeslot_2M[0][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Dtype == 3){
								se0121_reg_wr(outport,0,1);
							}
							return_value=0;
							break;
					default:return_value=2;
					        break;
    				}
					break;
	    case 4: switch (tsset_Dboard){
			        case 5: if (tsset_Dport == 1)
								PTUN(0,tsset_Dslot-1) = 0xFF;     //output 光口 0
							else PTUN(1,tsset_Dslot-1) = 0xFF;     //output 光口 1
							return_value = 0;
							break;
					case 4: if (tsset_Dport == 1)
								PTUN(2,tsset_Dslot-1) = 0xFF;     //output 光口 2
							else PTUN(3,tsset_Dslot-1) = 0xFF;     //output 光口 3
							return_value = 0;
							break;
					case 3: PTUN(4,tsset_Dslot-1) = 0xFF;     
							if (tsset_Dtype == 2){
								se0111_reg_wr(outporth,outportl,0,3);//删除Mapper中的下行支路
								timeslot_2M[2][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Dtype == 3){
								se0121_reg_wr(outport,0,3);
							}
							return_value=0;
							break;
					case 2: PTUN(6,tsset_Dslot-1) = 0xFF;     
							if (tsset_Dtype == 2){
								se0111_reg_wr(outporth,outportl,0,2);//删除Mapper中的下行支路
								timeslot_2M[1][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Dtype == 3){
								se0121_reg_wr(outport,0,2);
							}
							return_value=0;
							break;
		            case 1: PTUN(5,tsset_Dslot-1) = 0xFF;     
							if (tsset_Dtype == 2){
								se0111_reg_wr(outporth,outportl,0,1);//删除Mapper中的下行支路
								timeslot_2M[0][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Dtype == 3){
								se0121_reg_wr(outport,0,1);
							}
							return_value=0;
						    break;
					default:return_value=2;
							break;
    				}
				break;
	    case 3: switch (tsset_Dboard){
		        	case 5: PTUN(0,tsset_Dslot-1) = 0xFF;     //output 光口 0
							PTUN(1,tsset_Dslot-1) = 0xFF;     //output 光口 1
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,3);
								temp = XBYTE[0x8D00 + tsset_Dslot - 1];
								if (temp > 6){
									timeslot_2M[2][tsset_Sport - 1] = 0;	//删除下行时隙配置,作为2M盘的告警、性能标志位
								}
							}								
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,3);
							}
							return_value=0;
				        	break;
					case 4: PTUN(2,tsset_Dslot-1) = 0xFF;     //output 光口 2
							PTUN(3,tsset_Dslot-1) = 0xFF;     //output 光口 3
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,3);
								temp = XBYTE[0x8D00 + tsset_Dslot - 1];
								if (temp > 6){
									timeslot_2M[2][tsset_Sport - 1] = 0;	//删除下行时隙配置,作为2M盘的告警、性能标志位
								}
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,3);
							}
							return_value=0;
				        	break;
					case 3: PTUN(4,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,3);
								se0111_reg_wr(outporth,outportl,0,3);//删除Mapper中的下行支路
								timeslot_2M[2][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,3);
								se0121_reg_wr(outport,0,3);
							}
							return_value=0;
							break;
				    case 2: PTUN(6,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,3);
								se0111_reg_wr(outporth,outportl,0,2);//删除Mapper中的下行支路
								timeslot_2M[1][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,3);
								se0121_reg_wr(outport,0,2);
							}
							return_value=0;
							break;
	    	        case 1: PTUN(5,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,3);
								se0111_reg_wr(outporth,outportl,0,1);//删除Mapper中的下行支路
								timeslot_2M[0][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,3);
								se0121_reg_wr(outport,0,1);
							}
							return_value=0;
							break;
					default:return_value=2;
							break;
    				}
				break;
	    case 2: switch (tsset_Dboard){
		        	case 5: PTUN(0,tsset_Dslot-1) = 0xFF;     //output 光口 0
							PTUN(1,tsset_Dslot-1) = 0xFF;     //output 光口 1
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,2);
								temp = XBYTE[0x8D80 + tsset_Dslot - 1];
								if (temp > 6){
									timeslot_2M[1][tsset_Sport - 1] = 0;	//删除下行时隙配置,作为2M盘的告警、性能标志位
								}								
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,2);
							}
							return_value=0;
				        	break;
					case 4: PTUN(2,tsset_Dslot-1) = 0xFF;     //output 光口 2
							PTUN(3,tsset_Dslot-1) = 0xFF;     //output 光口 3
							se0111_reg_wr(inporth,inportl,0,2);
							if (tsset_Stype == 2){
								temp = XBYTE[0x8D80 + tsset_Dslot - 1];
								if (temp > 6){
									timeslot_2M[1][tsset_Sport - 1] = 0;	//删除下行时隙配置,作为2M盘的告警、性能标志位
								}								
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,2);
							}
							return_value=0;
				        	break;
					case 3: PTUN(4,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,2);
								se0111_reg_wr(outporth,outportl,0,3);//删除Mapper中的下行支路
								timeslot_2M[2][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,2);
								se0121_reg_wr(outport,0,3);
							}
							return_value=0;
							break;
					case 2: PTUN(6,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,2);
								se0111_reg_wr(outporth,outportl,0,2);//删除Mapper中的下行支路
								timeslot_2M[1][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,2);
								se0121_reg_wr(outport,0,2);
							}
							return_value=0;
							break;
	    	        case 1: PTUN(5,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,2);
								se0111_reg_wr(outporth,outportl,0,1);//删除Mapper中的下行支路
								timeslot_2M[0][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,2);
								se0121_reg_wr(outport,0,1);
							}
							return_value=0;
							break;
					default:return_value=2;
							break;
    				}
				break;
	    case 1: switch (tsset_Dboard){
		        	case 5: PTUN(0,tsset_Dslot-1) = 0xFF;     //output 光口 0
							PTUN(1,tsset_Dslot-1) = 0xFF;     //output 光口 1
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,1);
								temp = XBYTE[0x8D40 + tsset_Dslot - 1];
								if (temp > 6){
									timeslot_2M[0][tsset_Sport - 1] = 0;	//删除下行时隙配置,作为2M盘的告警、性能标志位
								}
							}								
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,1);
							}
							return_value=0;
				        	break;
					case 4: PTUN(2,tsset_Dslot-1) = 0xFF;     //output 光口 2
							PTUN(3,tsset_Dslot-1) = 0xFF;     //output 光口 3
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,1);
								temp = XBYTE[0x8D40 + tsset_Dslot - 1];
								if (temp > 6){
									timeslot_2M[0][tsset_Sport - 1] = 0;	//删除下行时隙配置,作为2M盘的告警、性能标志位
								}								
							}								
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,1);
							}
							return_value=0;
        	            	break;
					case 3: PTUN(4,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,1);
								se0111_reg_wr(outporth,outportl,0,3);//删除Mapper中的下行支路
								timeslot_2M[2][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,1);
								se0121_reg_wr(outport,0,3);
							}
							return_value=0;
							break;
					case 2: PTUN(6,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,1);
								se0111_reg_wr(outporth,outportl,0,2);//删除Mapper中的下行支路
								timeslot_2M[1][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,1);
								se0121_reg_wr(outport,0,2);
							}
							return_value=0;
							break;
	    	        case 1: PTUN(5,tsset_Dslot-1) = 0xFF;     
							if (tsset_Stype == 2){
								se0111_reg_wr(inporth,inportl,0,1);
								se0111_reg_wr(outporth,outportl,0,1);//删除Mapper中的下行支路
								timeslot_2M[0][tsset_Dport - 1] = 0; //删除下行时隙配置,作为2M盘的告警、性能标志位
							}
							else if (tsset_Stype == 3){
								se0121_reg_wr(inport,0,1);
								se0121_reg_wr(outport,0,1);
							}
							return_value=0;
							break;
					default:return_value=2;
							break;
    				}
				break;
		default:return_value=2;
				break;
	}
	}
	else return_value = 2;
	if (!GetResRdyTbl(1))
		SetResRdyTbl(1);                       //置响应事件表相应位为1
	return(return_value);                  //返回函数执行结果
}


void reply_mcp_command(unsigned long codeid,unsigned char returnvalue){
unsigned char xdata command;

	tx_buf[0]='$';
	tx_buf[1]='2';
	tx_buf[2]='1';
	command = (unsigned char) (codeid >> 16);
	tx_buf[3] = command;
	command = (unsigned char) (codeid >> 8);
	tx_buf[4] = command;
	command = (unsigned char) codeid;
	tx_buf[5] = command;
	tx_buf[6]='0';
	tx_buf[7]='0';
	tx_buf[8]='0';
	tx_buf[9]='1';
	tx_buf[10] = returnvalue+0x30;
	tx_buf[11]='*';
	tx_buf_pointer = 0;	
	while(tx_buf[tx_buf_pointer] != '*'){
		SBUF = tx_buf[tx_buf_pointer];
		while(tx_done == 0);
		tx_done = 0;
		tx_buf_pointer++;
	}
	SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
	while(tx_done == 0);
	tx_done = 0;
}



⌨️ 快捷键说明

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