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

📄 key.c

📁 M200一个与单片机通信的C语言软件源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
						g_cMenu_Value = DSP_REGISTER;	
					break;		
					case UP:			
						g_cMenu_Value --;	
					break;	
					case DOWN:		
						g_cMenu_Value ++;	
					break;
					default:	
					break;
				}	
			}	
			break;
			case ACTIVE_WRTDR:		//--Into Setting WRTDR
			{	
				switch(cKey_Value)
				{	
					case ENTER:	
					{
						EEPROM_Write_Data(EEAddr_WRTDR, g_cWRTDR, EEPROM_TYPE);
						PLC_Write_Reg(PLCAddrWRTDR, g_cWRTDR);	
						g_bRefresh_DSP_Flag = 1;
						g_cMenu_Value = DSP_WRTDR;	
					}
					break;
					case ESC:		
						g_cWRTDR= 0x00;	
					break;		
					case UP:			
						g_cWRTDR++;	
					break;	
					case DOWN:		
						g_cWRTDR--;	
					break;
					default:	
					break;
				}	
			}	
			break;
			
			//------------------------------------------------------------------------------//
			case DSP_WRTHO:		//--Displaying Setting WRTH0(0x0C)
			{	
				switch(cKey_Value)
				{	
					case ENTER:		
						g_cMenu_Value = ACTIVE_WRTHO;	
					break;
					case ESC:		
						g_cMenu_Value = DSP_REGISTER;	
					break;		
					case UP:			
						g_cMenu_Value --;	
					break;	
					case DOWN:		
						g_cMenu_Value ++;	
					break;
					default:	
					break;
				}	
			}	
			break;
			case ACTIVE_WRTHO:		//--Into Setting WRTH0
			{	
				switch(cKey_Value)
				{	
					case ENTER:
					{
						EEPROM_Write_Data(EEAddr_WRTH0, g_cWRTH0, EEPROM_TYPE);
						PLC_Write_Reg(PLCAddrWRTH0, g_cWRTH0);	
						g_bRefresh_DSP_Flag = 1;
						g_cMenu_Value = DSP_WRTHO;
					}
					break;
					case ESC:		
						g_cWRTH0 = 0x58;	
					break;		
					case UP:			
						g_cWRTH0 ++;	
					break;	
					case DOWN:		
						g_cWRTH0 --;
					break;
					default:	
					break;
				}	
			}	
			break;
			
			//------------------------------------------------------------------------------//
			case DSP_WRTH1:		//--Displaying Setting WRTH1(0x0D)
			{	
				switch(cKey_Value)
				{	
					case ENTER:		
						g_cMenu_Value = ACTIVE_WRTH1;	
					break;
					case ESC:		
						g_cMenu_Value = DSP_REGISTER;	
					break;		
					case UP:			
						g_cMenu_Value = DSP_WRTHO;	
					break;	
					case DOWN:		
						g_cMenu_Value = DSP_WRACD;	
					break;
					default:	
					break;
				}	
			}	
			break;
			case ACTIVE_WRTH1:		//--Into Setting WRTH1
			{	
				switch(cKey_Value)
				{	
					case ENTER:	
					{
						EEPROM_Write_Data(EEAddr_WRTH1, g_cWRTH1, EEPROM_TYPE);
						PLC_Write_Reg(PLCAddrWRTH1, g_cWRTH1);	
						g_bRefresh_DSP_Flag = 1;
						g_cMenu_Value = DSP_WRTH1;	
					}
					break;
					case ESC:		
						g_cWRTH1 = 0x0A;	
					break;		
					case UP:			
						g_cWRTH1 ++;	
					break;	
					case DOWN:		
						g_cWRTH1 --;	
					break;
					default:	
					break;
				}	
			}	
			break;
			
			//-------------------------        Active status handle        --------------------------//
			//------------------------------------------------------------------------------//
			case ACTIVE_TRANS:			//--Transmitter Mode
			{	
				if(cKey_Value == ESC)
				{		
					if(g_cTrans_Step == 0)
					{
						g_cMenu_Value = DSP_TRANSMITTER;
						PLC_Write_Reg(PLCAddrWRMR, g_cModCfgReg|0x80);	
						LED_TX = 1;
						LED_RX = 1;	
						TX_SWITH = 0;
					}
					else
					{
						g_bESC_Bit = 1;
					}
				}
			}	
			break;	
			//------------------------------------------------------------------------------//
			case ACTIVE_RECEIVER:		//--Receiver Mode		
			{	
				if(cKey_Value == ESC)		
				{		
					g_cMenu_Value = DSP_RECEIVER;
					LED_TX = 1;
					LED_RX = 1;
					LED_BUSY = 1;
					LED_CORRECT = 1;
				}
			}	
			break;	
			//------------------------------------------------------------------------------//
			case ACTIVE_INTER_TRANS:	//--Interactive Transmitter Mode
			{	
				if(cKey_Value == ESC)		
				{		
					g_cMenu_Value = DSP_INTER_TRANS;
					PLC_Write_Reg(PLCAddrWRMR, g_cModCfgReg|0x80);	
					LED_TX = 1;
					LED_RX = 1;
					LED_BUSY = 1;
					LED_CORRECT = 1;
				}
			}	
			break;	
			//------------------------------------------------------------------------------//	
			case ACTIVE_INTER_RECV:		//--Interactive Receiver Mode
			{	
				if(cKey_Value == ESC)		
				{		
					g_cMenu_Value = DSP_INTER_RECV;
					LED_TX = 1;
					LED_RX = 1;	
					LED_BUSY = 1;
					LED_CORRECT = 1;
				}
			}	
			break;
		
			//------------------------------------------------------------------------------//
			case ACTIVE_COM_SETTING:	
			{	
				if(cKey_Value == ESC)		
				{
					g_cMenu_Value = DSP_COM_SETTING;
					Config_Param_Completed  = FLAG_YES;
				}
			}	
			break;	
			//------------------------------------------------------------------------------//
			case ACTIVE_COM_RECVING:	
			{	
				if(cKey_Value == ESC)		
				{
					g_cMenu_Value = DSP_COM_RECVING;
					Config_Param_Completed  = FLAG_YES;
				}
			}	
			break;	
			//------------------------------------------------------------------------------//
			case ACTIVE_SW_VERSION:	
			{	
				if(cKey_Value == ESC)		
				{
					g_cMenu_Value = DSP_SW_VERSION;
				}
			}	
			break;
		}
		g_bRefresh_DSP_Flag = 1;
	}

	//------------------------------When The Key Value = 0xff---------------------------------//
	else
	{	
		if(g_cMenu_Value == ACTIVE_TRANS)				//--Transmitter Mode
		{	
			if((g_wCurrent_Pkg < g_wTotal_Pkg) || (g_wTotal_Pkg == 0))
			{	
				if((g_cTrans_Step != 6) && (cKey_Value == 0xff))
				{
					PLC_Transmit_Process( &g_Send_Buf[g_cSend_Byte_Cnt] );
				}
				else
				{	
					g_cTrans_Step = 0;
					g_wCurrent_Pkg++ ;
					DSP_Show(0x80,ST_sending);
					DSP_Data_Format(g_wCurrent_Pkg);
					DSP_Show(0x8c,"Pkgs");
					DSP_Show(0xc0,"@");
					DSP_DataRate();
					DSP_Show(0xc5,"bps");
					DSP_Write_Data('/');
					DSP_Frequency(0xca);

					/*
					for(cForCnt = 0; cForCnt < 90; cForCnt++)
					{
						TOOL_Delay_MS(20);
						
						if(Read_Key() == ESC)
						{
							g_cMenu_Value = DSP_TRANSMITTER;
							PLC_Write_Reg(PLCAddrWRMR, g_cModCfgReg|0x80);	
							LED_TX = 1;
							LED_RX = 1;	
							TX_SWITH = 0;
						}
					}
					//*/
					
					bMI200_RX_TXn = Status_TRAN;
					PLC_Write_Reg(PLCAddrWRMR, g_cModCfgReg & 0x7f);

					if(g_bESC_Bit == 1)
					{
						g_cMenu_Value = DSP_TRANSMITTER;
						PLC_Write_Reg(PLCAddrWRMR, g_cModCfgReg|0x80);	
						LED_TX = 1;
						LED_RX = 1;	
						TX_SWITH = 0;
					}
				}
			}	
		}		
		else if(g_cMenu_Value == ACTIVE_INTER_TRANS)		//--Interactive Transmitter Mode
		{	
			if(g_bInteract_Bit == 0)
			{	
				if((g_wCurrent_Pkg < g_wTotal_Pkg) || ( g_wTotal_Pkg==0 ))
				{	
					if(g_cTrans_Step != 6)		
					{
						PLC_Transmit_Process( &g_Send_Buf[g_cSend_Byte_Cnt] );
					}
					else
					{	
						g_wCurrent_Pkg++ ;
						g_Send_Buf[3] = (BYTE)((g_wCurrent_Pkg + 1)>>8);	//Current Package Low Byte
						g_Send_Buf[4] = (BYTE)(g_wCurrent_Pkg + 1); 		//Current Package Hign Byte
						DSP_Show(0x80,"T");
						DSP_Data_Format(g_wCurrent_Pkg);
						g_bInteract_Bit		= 1;
						g_wError_Pkgs_Num	= 0;
						g_cRecByte_H		= 0;			
						g_cRecByte_L		= 0;	
						g_cRecv_Step		= 0x00;
						bMI200_RX_TXn	= Status_RECV;					//Change to transmit mode
						PLC_Write_Reg(PLCAddrWRMR, g_cModCfgReg|0x8c);	//Write mode configuration, 
						cSend_Timeout_Cnt = 2;
					}
				}
			}	
			else	
			{	
				if ((cSend_Timeout_Cnt > 0) && (g_cRecv_Step != 4))
				{
					PLC_Receive_Process( &g_Recv_Buf[g_cRecv_Byte_Cnt] );
				}
				else
				{	
					if((g_Recv_Buf[0]=='R') && (g_Recv_Buf[1]=='e') && (g_Recv_Buf[2]=='c'))
					{
						if( g_bRecv_Pkg_Flag == 1)	
						{	
							g_wRecv_Pkgs_Num++;
						}
						if(cSend_Timeout_Cnt > 0)
						{	
							iRec_pkg_Num = ((WORD)g_Recv_Buf[3])*256 + g_Recv_Buf[4];
							if(g_bError_Pkg_Flag != 1)	
							{	
								g_wInter_Corr_Num++;
							}
						}
					}
					
					DSP_Show(0x86,"R");
					DSP_Data_Format(iRec_pkg_Num);
					DSP_Write_Data(0x20);
					DSP_Char_Format((iRec_pkg_Num/g_wCurrent_Pkg)*100);
					DSP_Write_Data('%');
					DSP_Show(0xc0,"R");
					DSP_Data_Format(g_wRecv_Pkgs_Num);
					DSP_Show(0xc6,"C");
					DSP_Data_Format(g_wInter_Corr_Num);
					DSP_Write_Cmd(0xcc);
					DSP_Char_Format((g_wInter_Corr_Num / g_wCurrent_Pkg)*100);
					DSP_Write_Data('%');

					g_cTrans_Step  = 0x00;
					bMI200_RX_TXn = Status_TRAN;
					PLC_Write_Reg(PLCAddrWRMR, g_cModCfgReg & 0x7f);	
					g_bInteract_Bit = 0;
				}
			}
		}	
		
		else if(g_cMenu_Value == ACTIVE_RECEIVER)		//--Receiver Mode
		{	
			if (g_cRecv_Step != 0x04)	
			{	
				PLC_Receive_Process( &g_Recv_Buf[g_cRecv_Byte_Cnt] );
			}
			else
			{	
				g_cRecv_Step = 0x00;
				DSP_Write_Cmd(0xc0);
				DSP_Show(0xc0,"Rec");	
				if( g_bRecv_Pkg_Flag == 1)	
				{	
					g_wRecv_Pkgs_Num++;
				}
				DSP_Data_Format(g_wRecv_Pkgs_Num);
				DSP_Write_Data('/');
				if( g_bError_Pkg_Flag == 1)		
				{
					g_wError_Pkgs_Num++;
				}
				DSP_Data_Format(g_wError_Pkgs_Num);
				DSP_Show(0xcc,"Err");

				g_bRecv_Pkg_Flag	= 0;
				g_bError_Pkg_Flag	= 0;
				g_cRecByte_H		= 0;			
				g_cRecByte_L		= 0;
				g_cRecv_Step		= 0x00;
			}
		}

		else if(g_cMenu_Value == ACTIVE_INTER_RECV)	//--Interactive Receiver Mode
		{	
			if(g_bInteract_Bit == 0)
			{	
				if (g_cRecv_Step != 0x04)	
				{
					PLC_Receive_Process( &g_Recv_Buf[g_cRecv_Byte_Cnt] );
				}
				else
				{	
					if((g_Recv_Buf[0]=='I') && (g_Recv_Buf[1]=='n') && (g_Recv_Buf[2]=='t'))
					{	
						g_bInteract_Bit	= 1;
						if( g_bRecv_Pkg_Flag == 1)	
						{
							g_wRecv_Pkgs_Num++;
						}
						DSP_Show(0x80,"PkgNum:");
						iRec_pkg_Num = ((WORD)g_Recv_Buf[3])*256 + g_Recv_Buf[4];
						DSP_Data_Format(iRec_pkg_Num);
						
						if(iRec_pkg_Num < g_wRecv_Pkgs_Num)
						{	
							g_wRecv_Pkgs_Num = 1;	
							g_wError_Pkgs_Num = 0;
						}
					
						if( g_bError_Pkg_Flag == 1)		
						{	
							g_wError_Pkgs_Num++;
						}
						iCorret_pkg_Num = g_wRecv_Pkgs_Num - g_wError_Pkgs_Num;
					
						DSP_Write_Cmd(0xc0);
						DSP_Show(0xc0,"Corr:");
						DSP_Data_Format(iCorret_pkg_Num);
						DSP_Write_Data(' ');
						DSP_Write_Data(' ');
						DSP_Write_Data(' ');
						DSP_Char_Format((iCorret_pkg_Num/iRec_pkg_Num)*100);
						DSP_Write_Data('%');

						g_cSend_Data_Length	= 6;
						g_Send_Buf[0]	= 'R';
						g_Send_Buf[1]	= 'e';
						g_Send_Buf[2]	= 'c';
						g_Send_Buf[3] = (unsigned char)(iCorret_pkg_Num / 256);
						g_Send_Buf[4] = (unsigned char)(iCorret_pkg_Num % 256);
						g_Send_Buf[5] = 'G';

						g_wCurrent_Pkg = 0;
						g_cTrans_Step  = 0x00;
						bMI200_RX_TXn = Status_TRAN;
						PLC_Write_Reg(PLCAddrWRMR, g_cModCfgReg & 0x7f);	
					}
					else
					{
						g_cRecv_Step = 0x00;
					}
				}
			}
			else
			{	
				if(g_cTrans_Step != 6)		
				{
					PLC_Transmit_Process( &g_Send_Buf[g_cSend_Byte_Cnt] );
				}
				else 
				{	
					g_bRecv_Pkg_Flag	= 0;
					g_bError_Pkg_Flag	= 0;
					g_cRecByte_H	= 0;			
					g_cRecByte_L	= 0;	
					g_cRecv_Step	= 0x00;
					bMI200_RX_TXn = Status_RECV;						//Change to receive mode
					PLC_Write_Reg(PLCAddrWRMR,g_cModCfgReg|0x8c) ;		//Write mode configuration, 
					g_bInteract_Bit = 0;
				}
			}
		}
	}
}

/***********************************************************************************
**										    End Of File											**
***********************************************************************************/

⌨️ 快捷键说明

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