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

📄 nais.c

📁 LPC213x系列启动代码,支持ADS1.2编译器,已成功运行
💻 C
📖 第 1 页 / 共 2 页
字号:
		
	eIndex = (AsciiToHex(Uart_ucReceBuff[10]) * 1000) + (AsciiToHex(Uart_ucReceBuff[11]) * 100) + 
		(AsciiToHex(Uart_ucReceBuff[12]) * 10) + (AsciiToHex(Uart_ucReceBuff[13]) * 1);
	
	for(i = sIndex; i < eIndex; i++)
	{
		temp = 0;
		Uart_ucSendBuff[6 + (i - sIndex) * 4] = HexToAscii((temp >> 4) & 0x0f);
		Uart_ucSendBuff[7 + (i - sIndex) * 4] = HexToAscii((temp >> 0) & 0x0f);
		Uart_ucSendBuff[8 + (i - sIndex) * 4] = HexToAscii((temp >> 12) & 0x0f);
		Uart_ucSendBuff[9 + (i - sIndex) * 4] = HexToAscii((temp >> 8) & 0x0f);
	}	
	
	Uart_ACK((eIndex - sIndex) * 4);
}//void Uart_RS(void)

//WS Write timer and counter set value area 写入定时器/计数器目标值
void Uart_WS(void)
{
	int i,temp,sIndex,eIndex;
	
	sIndex = (AsciiToHex(Uart_ucReceBuff[6]) * 1000) + (AsciiToHex(Uart_ucReceBuff[7]) * 100) + 
		(AsciiToHex(Uart_ucReceBuff[8]) * 10) + (AsciiToHex(Uart_ucReceBuff[9]) * 1);
		
	eIndex = (AsciiToHex(Uart_ucReceBuff[10]) * 1000) + (AsciiToHex(Uart_ucReceBuff[11]) * 100) + 
		(AsciiToHex(Uart_ucReceBuff[12]) * 10) + (AsciiToHex(Uart_ucReceBuff[13]) * 1);
	
	for(i = sIndex; i < eIndex; i++)
	{
		temp = 0;
		temp += AsciiToHex(Uart_ucReceBuff[14 + (i - sIndex) * 4]) << 4;
		temp += AsciiToHex(Uart_ucReceBuff[15 + (i - sIndex) * 4]) << 0;
		temp += AsciiToHex(Uart_ucReceBuff[16 + (i - sIndex) * 4]) << 12;
		temp += AsciiToHex(Uart_ucReceBuff[17 + (i - sIndex) * 4]) << 8;
	}	
	
	Uart_ACK(0);
}//void Uart_WS(void)

//RK Read timer and counter elapsed value area 读取定时器/计数器经过值
void Uart_RK(void)
{
	int i,temp,sIndex,eIndex;
	
	sIndex = (AsciiToHex(Uart_ucReceBuff[6]) * 1000) + (AsciiToHex(Uart_ucReceBuff[7]) * 100) + 
		(AsciiToHex(Uart_ucReceBuff[8]) * 10) + (AsciiToHex(Uart_ucReceBuff[9]) * 1);
		
	eIndex = (AsciiToHex(Uart_ucReceBuff[10]) * 1000) + (AsciiToHex(Uart_ucReceBuff[11]) * 100) + 
		(AsciiToHex(Uart_ucReceBuff[12]) * 10) + (AsciiToHex(Uart_ucReceBuff[13]) * 1);
	
	for(i = sIndex; i < eIndex; i++)
	{
		temp = 0;
		Uart_ucSendBuff[6 + (i - sIndex) * 4] = HexToAscii((temp >> 4) & 0x0f);
		Uart_ucSendBuff[7 + (i - sIndex) * 4] = HexToAscii((temp >> 0) & 0x0f);
		Uart_ucSendBuff[8 + (i - sIndex) * 4] = HexToAscii((temp >> 12) & 0x0f);
		Uart_ucSendBuff[9 + (i - sIndex) * 4] = HexToAscii((temp >> 8) & 0x0f);
	}	
	
	Uart_ACK((eIndex - sIndex) * 4);
}//void Uart_RK(void)

//WK Write timer and counter elapsed value area 写入定时器/计数器经过值
void Uart_WK(void)
{
	int i,temp,sIndex,eIndex;
	
	sIndex = (AsciiToHex(Uart_ucReceBuff[6]) * 1000) + (AsciiToHex(Uart_ucReceBuff[7]) * 100) + 
		(AsciiToHex(Uart_ucReceBuff[8]) * 10) + (AsciiToHex(Uart_ucReceBuff[9]) * 1);
		
	eIndex = (AsciiToHex(Uart_ucReceBuff[10]) * 1000) + (AsciiToHex(Uart_ucReceBuff[11]) * 100) + 
		(AsciiToHex(Uart_ucReceBuff[12]) * 10) + (AsciiToHex(Uart_ucReceBuff[13]) * 1);
	
	for(i = sIndex; i < eIndex; i++)
	{
		temp = 0;
		temp += AsciiToHex(Uart_ucReceBuff[14 + (i - sIndex) * 4]) << 4;
		temp += AsciiToHex(Uart_ucReceBuff[15 + (i - sIndex) * 4]) << 0;
		temp += AsciiToHex(Uart_ucReceBuff[16 + (i - sIndex) * 4]) << 12;
		temp += AsciiToHex(Uart_ucReceBuff[17 + (i - sIndex) * 4]) << 8;
	}	
	
	Uart_ACK(0);
}//void Uart_WK(void)

//MC Registration and reset of monitor contact 登录及复位监控触点
void Uart_MC(void)
{
}//void Uart_MC(void)

//MD Registration and reset of monitor data 登录及复位监控数据
void Uart_MD(void)
{
}//void Uart_MD(void)

//MG Monitor execution 执行监控
void Uart_MG(void)
{
}//void Uart_MG(void)

//RR Read system register 读取系统寄存器
void Uart_RR(void)
{
}//void Uart_RR(void)

//WR Write system register 写入系统寄存器
void Uart_WR(void)
{
}//void Uart_WR(void)

//RT Read Programmable Controller (PC) status 读取PLC 当前状态
void Uart_RT(void)
{
}//void Uart_RT(void)

//RP Read program 读取程序
void Uart_RP(void)
{
}//void Uart_RP(void)

//WP Write program 写入程序
//void UartX_WPX(void)
//{
//}//void UartX_WPX(void)

//RM Remote control (RUN/PROGRAM mode switching) 遥控(运行/编程模式切换)
void Uart_RM(void)
{
}//void Uart_RM(void)

//AB Transmission abort command 传输终止指令
void Uart_AB(void)
{
}//void Uart_AB(void)

void Uart_Nais(void)
{
	UCHAR bcc1,bcc2,addr;
	DWORD cmd;
	
	addr = (AsciiToHex(Uart_ucReceBuff[1]) << 4) + AsciiToHex(Uart_ucReceBuff[2]);
	addr = Uart_ucAddr;
	if(addr == Uart_ucAddr)
	{
		bcc1 = Uart_GetBcc(Uart_ucReceBuff,Uart_ucReceLen - 3);
		bcc2 = (AsciiToHex(Uart_ucReceBuff[Uart_ucReceLen -3]) << 4) + AsciiToHex(Uart_ucReceBuff[Uart_ucReceLen - 2]);
		if(bcc1 == bcc2)
		{uwY0 |= (1 << 4);
			cmd = (Uart_ucReceBuff[4] << 16) + (Uart_ucReceBuff[5] << 8) + Uart_ucReceBuff[6];
			switch(cmd)
			{
				case RCS:	Uart_RCS();
							break;
				
				case WCS:	Uart_WCS();
							break;
				
				case RCP:	Uart_RCP();
							break;
							
				case WCP:	Uart_WCP();
							break;
				
				case RCC:	Uart_RCC();
							break;
							
				case WCC:	Uart_WCC();
							break;
				
				default:		cmd = 0;
							break;
			}
			
			if(cmd == 0)
			{							
				cmd = (Uart_ucReceBuff[4] << 8) + Uart_ucReceBuff[5];
				switch(cmd)
				{	
					case SC:		Uart_SC();
								break;
								
					case RD:		Uart_RD();
								break;
					
					case WD:	Uart_WD();
								break;
								
					case SD:		Uart_SD();
								break;
					
					case RS:		Uart_RS();
								break;
					
					case WS:	Uart_WS();
								break;
					
					case RK:		Uart_RK();
								break;
								
					case WK:	Uart_WK();
								break;
								
					case MC:		Uart_MC();
								break;
					
					case MD:		Uart_MD();
								break;
					
					case MG:		Uart_MG();
								break;
					
					case RR:		Uart_RR();
								break;
								
					case WR:	Uart_WR();
								break;
								
					case RT:		Uart_RT();
								break;
					
					case RP:		Uart_RP();
								break;
					
					//case WPX:	
								//break;
								
					case RM:		Uart_RM();
								break;
					
					case AB:		Uart_AB();
								break;
				}
			}
		}
	}
}//void Uart_Nais(void)

void Uart0_Nais(void)
{
	UCHAR i;
	
	if(Uart0_ucReceBuff[0] == '%' && Uart0_ucReceBuff[Uart0_ucReceLen - 1] == 0x0d && Uart0_ucReceLen > 7)
	{
		Uart_ucReceLen = Uart0_ucReceLen;
		for(i = 0; i < Uart0_ucReceLen; i++) Uart_ucReceBuff[i]  = Uart0_ucReceBuff[i];
		
		Uart_ucSendLen = 0;
		Uart_Nais();
				
		if(Uart_ucSendLen > 0)
		{
			Uart0_ucSendLen = Uart_ucSendLen;
			for(i = 0; i < Uart_ucSendLen; i++) Uart0_ucSendBuff[i] = Uart_ucSendBuff[i];
					
			Uart0_ucSendPosi = 1;
			U0THR = Uart0_ucReceBuff[0];
		}
				
		Uart0_ucReceLen = 0;
		Uart0_udTimeOut = 0;
	}
}//void Uart0_Nais(void)

void Uart1_Nais(void)
{
	UCHAR i;
	
	if(Uart1_ucReceBuff[0] == '%' && Uart1_ucReceBuff[Uart1_ucReceLen - 1] == 0x0d && Uart1_ucReceLen > 7)
	{
		Uart_ucReceLen = Uart1_ucReceLen;
		for(i = 0; i < Uart1_ucReceLen; i++) Uart_ucReceBuff[i]  = Uart1_ucReceBuff[i];
		
		Uart_ucSendLen = 0;
		Uart_Nais();
				
		if(Uart_ucSendLen > 0)
		{
			uwY0 ^= (1 << 9);
			
			Uart1_ucSendLen = Uart_ucSendLen;
			for(i = 0; i < Uart_ucSendLen; i++) Uart1_ucSendBuff[i] = Uart_ucSendBuff[i];
					
			Uart1_ucSendPosi = 1;
			U1THR = Uart1_ucReceBuff[0];
		}
				
		Uart1_ucReceLen = 0;
		Uart1_udTimeOut = 0;
	}
}//void Uart1_Nais(void)

⌨️ 快捷键说明

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