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

📄 main3.c

📁 FPGA flash 编程序,使用CYCLONE和FLASH
💻 C
📖 第 1 页 / 共 4 页
字号:
******************************************************************************/void Transmit_Mistake_Package(np_uart* uartbase,unsigned char mistake_mark){	unsigned short result;	unsigned char data[10]={Parameter[0],Parameter[1],0xcc,0xc1,mistake_mark,0x0,0x0};	unsigned char Data_Final[20];	unsigned char tempdata=0;	int Data_Final_Number=0;	int datanumber=0;	int i,j;		result=Cal_Crc(&data[0],7);	data[7]=(result>>8);	data[8]=result;	data[9]=0x7e;		for(i=0;i<20;i++)	{		Data_Final[i]=0;	}			for(i=0;i<10;i++)	{		for(j=0;j<8;j++)		{			Add_Bit=(data[i]>>(7-j))%2;			Add_transparences();			tempdata=tempdata+(Add_Bit<<(7-Data_Final_Number++));			if((Add_transparence_valid==1) && (i!=9))			{				Data_Final_Number++;			}						if(Data_Final_Number==8)			{				Data_Final[datanumber++]=tempdata;				Data_Final_Number=0;				tempdata=0;			}			}	}	if(Data_Final_Number!=0)	{		Data_Final[datanumber++]=tempdata;	}		uartbase->np_uarttxdata=0x7e;	delay(2000);				for(i=0;i<datanumber;i++)	{		uartbase->np_uarttxdata=Data_Final[i];		delay(2000);					}}/******************************************************************************发送标志信息的函数*******************************************************************************/void TransmitTestPackage(np_uart* uartbase){	unsigned short resutl;	unsigned char data[21];	unsigned char Data_Final[25];	unsigned char tempdata=0;	int Data_Final_Number=0;	int datanumber=0;	int i,j;			data[0]=Parameter[0];	data[1]=Parameter[1];	data[2]=0xcc;	data[3]=0xc1;	for(i=0;i<14;i++)	{		data[i+4]=Test_Package_Data[i];	}		resutl=Cal_Crc(&data[0],18);	data[18]=(resutl>>8);	data[19]=resutl;	data[20]=0x7e;		for(i=0;i<25;i++)	{		Data_Final[i]=0;	}				for(i=0;i<21;i++)	{		for(j=0;j<8;j++)		{			Add_Bit=(data[i]>>(7-j))%2;			Add_transparences();			tempdata=tempdata+(Add_Bit<<(7-Data_Final_Number++));			if((Add_transparence_valid==1) && (i!=20))			{				Data_Final_Number++;			}						if(Data_Final_Number==8)			{				Data_Final[datanumber++]=tempdata;				Data_Final_Number=0;				tempdata=0;			}			}	}	if(Data_Final_Number!=0)	{		Data_Final[datanumber++]=tempdata;	}		uartbase->np_uarttxdata=0x7e;	delay(2000);				for(i=0;i<datanumber;i++)	{		uartbase->np_uarttxdata=Data_Final[i];		delay(2000);					}							}/*******************************************************************************响应cpu的发送函数*******************************************************************************/void TransmitComm(np_uart* uartbase){	if(Check_Tx_Mark_Bit(Transmit_Number)==1)	   Write_Flash_Flow();	else	  if(Check_Tx_Mark_Bit(Transmit_Number)==2)	     Write_Comm(uartbase);	  else	    if(Check_Tx_Mark_Bit(Transmit_Number)==3)	      Write_Flash();	    else	       if(Check_Tx_Mark_Bit(Transmit_Number)==4)	         Handle_Para();	*MarkTx[Transmit_Number]=0x87;}/******************************************************************************485发送函数*******************************************************************************/void Transmit485(){	}/******************************************************************************以太网发送函数*******************************************************************************/void TransmitEnternet(){}/******************************************************************************串口接收数据函数*******************************************************************************/int  ReceiveComm(){	int i,j,k,m;	unsigned char* p;	unsigned char answer=0;		while(RxHead!=RxTail)	{//		na_uart1->np_uarttxdata=RxBuf[RxTail];		for(i=0; i<8; i++)		{//		    bb=exp(8-i);//			if((RxBuf[RxTail] & bb)==0)//			 Test_Bit=0;//			else//			 Test_Bit=1;     		Test_Bit=(RxBuf[RxTail]>>(7-i))%2;    		switch(RevStatus)                        //协议的各种状态			{				case 0 :                                                 Check_Frame();				break;				case 1 :                            //数据标志位					Check_Transparence();					if(transparence_valid==0)					{						Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number));						if(++Valid_Data_Number==8)						{							if(Valid_Data==Parameter[0])							{								transparence=0;	        	     						RevStatus=2;	                            Valid_Data=0;	                                Valid_Data_Number=0;									CheckData[0]=Parameter[0];					//	    	na_uart1->np_uarttxdata=0x7e;					//			delay(3000);					//			na_uart1->np_uarttxdata=Parameter[0];					//			delay(3000);								                            }                            else                            {	                            transparence=0;	                            RevStatus=0;									na_uart1->np_uarttxdata=0x01;								delay(3000);		                            Valid_Data=0;	                                Valid_Data_Number=0;                                BeginBitContent=0;								                            }						}					}					else					{						if(transparence_valid==1 && RevStatus==0)						{							transparence_valid=0;							transparence=0;							Valid_Data_Number=0;							Valid_Data=0;							RevStatus=1;							na_uart1->np_uarttxdata=0x55;							delay(3000);													}			    	}				   break;				case 2 :					Check_Transparence();					if(transparence_valid==0)					{						jj=Valid_Data+(Test_Bit<<(7-Valid_Data_Number));						Valid_Data=jj;						if(++Valid_Data_Number==8)						{						//	if(Valid_Data==Parameter[1])						   if(jj==Parameter[1])							{								transparence=0;	        	     						RevStatus=3;	                                Valid_Data=0;                                Valid_Data_Number=0;	                                CheckData[1]=Parameter[1];						//		na_uart1->np_uarttxdata=Parameter[1];						//		delay(3000);                            }                            else                            {	                            transparence=0;	                            RevStatus=0;                                Valid_Data=0;	                                Valid_Data_Number=0;									na_uart1->np_uarttxdata=0x02;								delay(3000);                            }						}					}					else					{						if(transparence_valid==1 && RevStatus==0)						{							transparence_valid=0;							transparence=0;							Valid_Data_Number=0;							Valid_Data=0;							RevStatus=1;						}					}									   break;				case 3 :					Check_Transparence();					if(transparence_valid==0)					{						Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number));						if(++Valid_Data_Number==8)						{							if(Valid_Data==0xcc)							{								transparence=0;	        	     						RevStatus=4;	                                Valid_Data=0;	                                Valid_Data_Number=0;									CheckData[2]=0xcc;						//		na_uart1->np_uarttxdata=0xcc;						//		delay(3000);								                            }                            else                            {	                            transparence=0;	                            RevStatus=0;                                Valid_Data=0;	                                Valid_Data_Number=0;									na_uart1->np_uarttxdata=0x03;								delay(3000);                            }						}					}					else					{						if(transparence_valid==1 && RevStatus==0)						{							transparence_valid=0;							transparence=0;							Valid_Data_Number=0;							Valid_Data=0;							RevStatus=1;						}					}									   break;					case 4 :					Check_Transparence();					if(transparence_valid==0)					{						Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number));						if(++Valid_Data_Number==8)						{							if(Valid_Data==0xc1)							{								transparence=0;	        	     						RevStatus=5;	                                Valid_Data=0;	                                Valid_Data_Number=0;	                                CheckData[3]=0xc1;                                Data_Number=4;					//			na_uart1->np_uarttxdata=0xc1;					//			delay(3000);                            }                            else                            {	                            transparence=0;	                            RevStatus=0;                                Valid_Data=0;	                                Valid_Data_Number=0;									na_uart1->np_uarttxdata=0x04;								delay(3000);                            }						}					}					else					{						if(transparence_valid==1 && RevStatus==0)						{							transparence_valid=0;							transparence=0;							Valid_Data_Number=0;							Valid_Data=0;							RevStatus=1;						}					}									   break;						case 5 :					Check_Transparence();					if(transparence_valid==0)					{						Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number));						if(++Valid_Data_Number==8)						{				//			na_uart1->np_uarttxdata=Valid_Data;				//			delay(3000);							CheckData[Data_Number]=Valid_Data;							Data_Number++;							RevStatus=6;//							transparence=0;                            Valid_Data=0;	                            Valid_Data_Number=0;													}					}										else					{						if(transparence_valid==1 && RevStatus==0)						{							transparence_valid=0;							transparence=0;							Valid_Data_Number=0;							Valid_Data=0;							RevStatus=1;						}					}									   break;						case 6 : 					Check_Transparence();					if(transparence_valid==0)					{						Valid_Data=Valid_Data+(Test_Bit<<(7-Valid_Data_Number));						if(++Valid_Data_Number==8)						{				//			na_uart1->np_uarttxdata=Valid_Data;				//			delay(3000);							CheckData[Data_Number]=Valid_Data;							Data_Number++;							RevStatus=6;//							transparence=0;                            Valid_Data=0;	                            Valid_Data_Number=0;													}						break;					}					else					if(transparence_valid==1 && transparence==0 && RevStatus!=0)					{						transparence_valid=0;						break;					}					else					{					 if(transparence_valid==1 && RevStatus==0)						{				//			na_uart1->np_uarttxdata=0x7e;				//			delay(3000);							p=&CheckData[0];							CheckByte_Write=Cal_Crc(p,(Data_Number-2));							transparence_valid=0;							transparence=0;							Valid_Data=0;							Check_Temp=(CheckData[Data_Number-2]<<8)+(CheckData[Data_Number-1]);							if(CheckByte_Write==Check_Temp)							{			//				na_uart1->np_uarttxdata=0x88;			//				delay(3000);																if(CheckData[4]==0x94 || CheckData[4]==0x95 ||								   CheckData[4]==0x96 || CheckData[4]==0x98 ||								   CheckData[4]==0x99)								{								   Write_Flash();								   Write_Comm_to_Ram();											   Finished_Receive=Receive_From;							    		//				   answer=1;							    }							    else							    {								   if(CheckData[4]==0x84 || CheckData[4]==0x85 ||								      CheckData[4]==0x86 || CheckData[4]==0x88 ||								      CheckData[4]==0x89)								   {									  Transmit_Query_Package(uart_use,CheckData[4]);								   }								   else								   {										if(CheckData[4]==0x8D)										{											Transmit_Flow_Package(uart_use);										}										else										{											if(CheckData[4]==0x93)											{												Write_Comm_to_Ram();												Finished_Receive=Receive_From;											//	Transmit_Lai_Package(uart_use,CheckData[4]);												}											else											{									      Write_Comm_to_Ram();									      Finished_Receive=Receive_From;									        }	//							          TransmitTestPackage(uart_use);	                                    }								   }							    }					//			 Finished_Receive=Receive_From;							         CheckByte_Write=0;								         if(answer==1)						         {						            Transmit_Answer_Package(uart_use,CheckData[4]);							            answer=0;					             }																	}							else							{						   		 Finished_Receive=0;						         CheckByte_Write=0;													  			 Transmit_Mistake_Package(uart_use,CheckData[4]);							}							   BeginBitContent=0;						   Data_Number=0;			                           Valid_Data=0;	                           Valid_Data_Number=0;																				}				   break;			    	}				        break;														  				default :                          					 RevStatus=0;					 BeginBitContent=0;				  break;												}	}		if(++RxTail>(RXBUFSIZE-1))		   RxTail=0;	}	if(RevStatus==-1)	 return -1;	else	 return 1;}/******************************************************************************485口接收数据函数*******************************************************************************/int  Receive485(){}/*******************************************************************************以太网接收数据函数*******************************************************************************/int  ReceiveEnternet(){}

⌨️ 快捷键说明

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