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

📄 ir.c

📁 一款居于世纪民生CS6208的带TCP-IP网络功能的8位MCU内核的芯片的应用代码。
💻 C
📖 第 1 页 / 共 4 页
字号:
                                                            //__wcommand = R_W_METER;
															//METER0.PULSE = NIC_RECV_BUFFER[PC_COMMAND+1];
															//METER0.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+2];
															//METER1.PULSE = NIC_RECV_BUFFER[PC_COMMAND+3];
															//METER1.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+4];
															//METER2.PULSE = NIC_RECV_BUFFER[PC_COMMAND+5];
															//METER2.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+6];
															//METER3.PULSE = NIC_RECV_BUFFER[PC_COMMAND+7];
															//METER3.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+8];
															//METER4.PULSE = NIC_RECV_BUFFER[PC_COMMAND+9];
															//METER4.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+10];
															//METER5.PULSE = NIC_RECV_BUFFER[PC_COMMAND+11];
															//METER5.WIDTH = NIC_RECV_BUFFER[PC_COMMAND+12];
															//__bwrite_meter_para = TRUE;
															UDP(R_W_METER);
                                                            break;
                                              case R_R_METER:
                                                            //__wcommand = R_R_METER;
															UDP(R_R_METER);
                                                            break;
                                              case R_ARMED:
                                                            //__wcommand = R_ARMED;
															//__warmed = 0x80;
															//__ddelay2 = __ddelay;
															//ARMED_ON();
															//ALARM_BUFFER[3] |= 0x80;
															UDP(R_ARMED);
                                                            break;
                                              case R_TIME:
                                                            //__wcommand = R_TIME;
															//TIME[0] = NIC_RECV_BUFFER[PC_COMMAND+25];
															//TIME[1] = NIC_RECV_BUFFER[PC_COMMAND+26];
															//TIME[2] = NIC_RECV_BUFFER[PC_COMMAND+27];
															//TIME[3] = NIC_RECV_BUFFER[PC_COMMAND+28];
															//TIME[4] = NIC_RECV_BUFFER[PC_COMMAND+29];
															//TIME[5] = NIC_RECV_BUFFER[PC_COMMAND+30];
															//TIME[6] = NIC_RECV_BUFFER[PC_COMMAND+31];
															UDP(R_TIME);
                                                            break;
                                              case R_CODE:
                                                            //__wcommand = R_CODE;
															//__wpassword[0] = PASSWORD[0];
															//__wpassword[1] = PASSWORD[1];
															//__wpassword[2] = PASSWORD[2];
															//__wpassword[3] = PASSWORD[3];
															//__wpassword[4] = PASSWORD[4];
															//__wpassword[5] = PASSWORD[5];
															//__bwrite_code = TRUE;
															UDP(R_CODE);
                                                            break;
                                              case R_MODIFYMAC:
                                                            //__wcommand = R_MODIFYMAC;
															MACADDRESS[0] = NIC_RECV_BUFFER[PC_COMMAND+1];
															MACADDRESS[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
															MACADDRESS[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
															MACADDRESS[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
															MACADDRESS[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
															MACADDRESS[5] = NIC_RECV_BUFFER[PC_COMMAND+6];
															//__bwrite_mac = TRUE;
															CHECKSUM_UDP();
															UDP(R_MODIFYMAC);
                                                            break;
                                              case R_MODIFYIP:
                                                            //__wcommand = R_MODIFYIP;
															IPADDRESS[0] = NIC_RECV_BUFFER[PC_COMMAND+1];
															IPADDRESS[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
															IPADDRESS[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
															IPADDRESS[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
 														    //__bwrite_ip = TRUE;
															CHECKSUM_UDP();
															UDP(R_MODIFYIP);
                                                            break;
											  case R_MODIFYIPMAC:
                                                            //__wcommand = R_MODIFYIPMAC;
															MACADDRESS[0] = NIC_RECV_BUFFER[PC_COMMAND+1];
															MACADDRESS[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
															MACADDRESS[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
															MACADDRESS[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
															MACADDRESS[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
															MACADDRESS[5] = NIC_RECV_BUFFER[PC_COMMAND+6];
															IPADDRESS[0] = NIC_RECV_BUFFER[PC_COMMAND+7];
															IPADDRESS[1] = NIC_RECV_BUFFER[PC_COMMAND+8];
															IPADDRESS[2] = NIC_RECV_BUFFER[PC_COMMAND+9];
															IPADDRESS[3] = NIC_RECV_BUFFER[PC_COMMAND+10];
															//__bwrite_mac = TRUE;
															//__bwrite_ip = TRUE;
															CHECKSUM_UDP();
															UDP(R_MODIFYIPMAC);
                                                            break;
                                              case R_MESSAGE:
                                                            /*
                                                            __dmessage = 1;
															MESSAGE_ON();
                                                            //__wcommand = R_MESSAGE;
															switch (NIC_RECV_BUFFER[PC_COMMAND+1])
															       {
                                                                     case MESSAGE_SMS:
																	      __wmessage = HOWMANY_SMS();
																		  if (__wmessage == 20)
																		     {
                                                                               DEL_SMS(0);
																			   __wmessage = 19;
																			 }
																	      SMS[__wmessage][1] = NIC_RECV_BUFFER[PC_COMMAND+2];
																		  SMS[__wmessage][2] = NIC_RECV_BUFFER[PC_COMMAND+3];
																		  SMS[__wmessage][3] = NIC_RECV_BUFFER[PC_COMMAND+4];
																		  SMS[__wmessage][4] = NIC_RECV_BUFFER[PC_COMMAND+5];
																		  SMS[__wmessage][0] = UNREAD_MESSAGE;
																		  for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
																		      {
																		        SMS[__wmessage][i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
																			  }
																		  for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
																		      {
																			    SMS[__wmessage][i] = 0x00;
																				SMS[__wmessage][i+1] = 0x20;
																			  }
																	      break;
																	 case MESSAGE_WEATHER:
																	      WEATHER[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
																		  WEATHER[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
																		  WEATHER[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
																		  WEATHER[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
																		  WEATHER[0] = UNREAD_MESSAGE;
																		  for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
																		      {
																		        WEATHER[i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
																			  }
																		  for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
																		      {
																			    WEATHER[i] = 0x00;
																				WEATHER[i+1] = 0x20;
																			  }
																	      break;
																	 case MESSAGE_STOCK:
																	      STOCK[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
																		  STOCK[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
																		  STOCK[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
																		  STOCK[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
																		  STOCK[0] = UNREAD_MESSAGE;
																		  for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
																		      {
																		        STOCK[i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
																			  }
																		  for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
																		      {
																			    STOCK[i] = 0x00;
																				STOCK[i+1] = 0x20;
																			  }
																	      break;
																	 case MESSAGE_CARD:
																	      CARD[1] = NIC_RECV_BUFFER[PC_COMMAND+2];
																		  CARD[2] = NIC_RECV_BUFFER[PC_COMMAND+3];
																		  CARD[3] = NIC_RECV_BUFFER[PC_COMMAND+4];
																		  CARD[4] = NIC_RECV_BUFFER[PC_COMMAND+5];
																		  CARD[0] = UNREAD_MESSAGE;
																		  for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
																		      {
																		        CARD[i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
																			  }
																		  for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
																		      {
																			    CARD[i] = 0x00;
																				CARD[i+1] = 0x20;
																			  }
																	      break;
																	 case MESSAGE_NEWS:
																	      __wmessage = HOWMANY_NEWS();
																		  if (__wmessage == 5)
																		     {
                                                                               DEL_NEWS(0);
																			   __wmessage = 4;
																			 }
																	      NEWS[__wmessage][1] = NIC_RECV_BUFFER[PC_COMMAND+2];
																		  NEWS[__wmessage][2] = NIC_RECV_BUFFER[PC_COMMAND+3];
																		  NEWS[__wmessage][3] = NIC_RECV_BUFFER[PC_COMMAND+4];
																		  NEWS[__wmessage][4] = NIC_RECV_BUFFER[PC_COMMAND+5];
																		  NEWS[__wmessage][0] = UNREAD_MESSAGE;
																		  for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
																		      {
																		        NEWS[__wmessage][i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
																			  }
																		  for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
																		      {
																			    NEWS[__wmessage][i] = 0x00;
																				NEWS[__wmessage][i+1] = 0x20;
																			  }
																	      break;
																	 case MESSAGE_ADMINISTRATION:
																	      __wmessage = HOWMANY_ADMINISTRATION();
																		  if (__wmessage == 5)
																		     {
                                                                               DEL_ADMINISTRATION(0);
																			   __wmessage = 4;
																			 }
																	      ADMINISTRATION[__wmessage][1] = NIC_RECV_BUFFER[PC_COMMAND+2];
																		  ADMINISTRATION[__wmessage][2] = NIC_RECV_BUFFER[PC_COMMAND+3];
																		  ADMINISTRATION[__wmessage][3] = NIC_RECV_BUFFER[PC_COMMAND+4];
																		  ADMINISTRATION[__wmessage][4] = NIC_RECV_BUFFER[PC_COMMAND+5];
																		  ADMINISTRATION[__wmessage][0] = UNREAD_MESSAGE;
																		  for (i=0;i<NIC_RECV_BUFFER[PC_COMMAND+6];i++)
																		      {
																		        ADMINISTRATION[__wmessage][i+MESSAGE_STATUS+MESSAGE_NO] = NIC_RECV_BUFFER[PC_COMMAND+6+1+i];
																			  }
																		  for (i=(NIC_RECV_BUFFER[PC_COMMAND+6]+MESSAGE_STATUS+MESSAGE_NO);i<(MESSAGE_STATUS+MESSAGE_NO+MESSAGE_CHAR);i+=2)
																		      {
																			    ADMINISTRATION[__wmessage][i] = 0x00;
																				ADMINISTRATION[__wmessage][i+1] = 0x20;
																			  }
																	      break;
																   }*/
															UDP(R_MESSAGE);
                                                            break;
                        	                  default:      
											                //__wcommand = 0;
											                break;
	                                   }
                                 
                	         }
                          else if ( ((NIC_RECV_BUFFER[PC_PING]==0x08)
                                    ||(NIC_RECV_BUFFER[PC_PING]==0x00))
                                    &&(NIC_RECV_BUFFER[PC_PING+1]==0x0) )
                             {
							    /* XmitPoint = __wxmitcurr*XMIT_NUMBER;
								 __wxmitcurr ++;
								 if (__wxmitcurr > XMIT_STOP)  __wxmitcurr = XMIT_START;
								 for(i=0;i<6;i++)
                                    NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[10+i];
                                 for(i=6;i<12;i++)
                                    NIC_XMIT_RING[XmitPoint+i] = MACADDRESS[i-6];
                                 for(i=12;i<26;i++)
                                    NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i+4];
                                 for(i=26;i<30;i++)
                                    NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i+8];
                                 for(i=30;i<34;i++)
                                    NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i];
                                 for(i=34;i<42;i++)
                                    NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i+4];
                                 for(i=42;i<74;i++)
                                    NIC_XMIT_RING[XmitPoint+i] = NIC_RECV_BUFFER[i+4];
							    */  
                                 //PING();	
						     	 NIC_TPSTART = TPSTART; 
                                 for(i=0;i<6;i++)
                                    NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[10+i];
                                 for(i=6;i<12;i++)
                                    NIC_XMIT_BUFFER[i] = MACADDRESS[i-6];
                                 for(i=12;i<26;i++)
                                    NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i+4];
                                 for(i=26;i<30;i++)
                                    NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i+8];
                                 for(i=30;i<34;i++)
                                    NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i];
                                 for(i=34;i<42;i++)
                                    NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i+4];
                                 for(i=42;i<74;i++)
                                    NIC_XMIT_BUFFER[i] = NIC_RECV_BUFFER[i+4];
								  
								 
								 //start xmit
								 NIC_TBCNT0 = 0x00;
								 NIC_TBCNT1 = 0x01;
								 NIC_CR = CR_Start|CR_Xmit;
								 //CHECK_XMIT();
								 
                             }
                         else if ( (NIC_RECV_BUFFER[32] == IPADDRESS[0])&&
                                   (NIC_RECV_BUFFER[33] == IPADDRESS[1])&&
                                   (NIC_RECV_BUFFER[34] == IPADDRESS[2])&&
                                   (NIC_RECV_BUFFER[35] == IPADDRESS[3])&&
                                   (NIC_RECV_BUFFER[24] == 0x00     )&&
                                   (NIC_RECV_BUFFER[25] == 0x02     ) )
                             {
                                 __bIPCOL = 1;
                             }
                      }

                    NextPacket = NIC_RECV_BUFFER[1];
					if (NextPacket == RPSTART) NIC_BNRY = RPSTOP-1;
					else NIC_BNRY = NextPacket-1;            
   
			}//while (__wcurr != NextPacket)
	   }
	if (__wisr&ISR_RcvError)
	   {
              NIC_ISR = ISR_RcvError;
	   }
	if (__wisr&ISR_RcvBufOverFlow)
	   {
              NIC_ISR = ISR_RcvBufOverFlow;
              Init_NIC();
	   }
	if (__wisr&ISR_XmtOk)
	   {
              NIC_ISR = ISR_XmtOk;
	   }
    if (__wisr&ISR_XmtError)
	   {
              NIC_ISR = ISR_XmtError;
	   }
	/*else if (__wisr&ISR_Reset)
	   {
              _nop_();
	   }*/
             
}
void CHECKSUM_UDP()
{
    unsigned char i;
    //destination address
    CRC[0] = PC_MACADDRESS[0];

⌨️ 快捷键说明

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