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

📄 main.c

📁 m16+cp2200组成的网络接口。 m16使用内部RC振荡8M
💻 C
字号:
#include "board.h"
#include "cp2200.h"
#include "arp.h"
#include "icmp.h"

extern union NetNode myNode;
extern union netcard rxdnetbuf;
extern union netcard txdnetbuf;

int main(void)
{
	unsigned char tmp;
	unsigned int num_bytes;
	OSCCAL = 0x9A;
	portIni();
	
//	tmp = ReadFlash(0,1);

	tmp = PHY_Init();
	MAC_Init();
	arptab_init();
	myNode.node.ip = IP4_ADDR(218,1,168,192);
	myNode.node.mask = IP4_ADDR(0,255,255,255);
	myNode.node.gate = IP4_ADDR(1,1,168,192);
	while(1)
	{
		if(CPRcv())         // Check if the current packet is valid
		{                             // On detection of a valid packet:
      
            // Unload packet from the receive buffer and store in <RX_BUFF>   
            num_bytes = CP220x_Receive(&rxdnetbuf);
			if(num_bytes > 0)
			{
				if(rxdnetbuf.etherframe.protocal==ARP_PACKET)
				{			//表示收到一个arp请求包
					if(rxdnetbuf.arpframe.operation==0x0100)
					{
						arp_answer();//ARP request,处理arp数据包
					}
					else if(rxdnetbuf.arpframe.operation==0x0200)
					{
						arp_process();//ARP answer
					}
				}
				else if((rxdnetbuf.etherframe.protocal == IP_PACKET)		//	收到一个IP包
					&& ((rxdnetbuf.ipframe.verandihl&0xf0) == 0x40)	//	IP V4
					&& (rxdnetbuf.ipframe.destip[0] == myNode.nodebytes.ipbytes[0])
					&& (rxdnetbuf.ipframe.destip[1] == myNode.nodebytes.ipbytes[1])
					&& (rxdnetbuf.ipframe.destip[2] == myNode.nodebytes.ipbytes[2])
					&& (rxdnetbuf.ipframe.destip[3] == myNode.nodebytes.ipbytes[3]))	//	my IP
				{
					arp_ip_mac();
					if(rxdnetbuf.ipframe.protocal == 1)			//	ICMP
					{
						if(rxdnetbuf.icmpframe.type == 8)		//	echo
						{
							ping_answer();
						}
					}
					else if(rxdnetbuf.ipframe.protocal == 17)	//	udp
					{
						//	net_udp_rcv();
					}
					else if(rxdnetbuf.ipframe.protocal == 6)		//	tcp
					{
						//	tcp_rcve(&rxdnetbuf);;
					}
				}
				else
				{
					//Lib_Uart_SendString("\nIEEE 802 packet rejected!\n");		//	IEEE 802 pkt rejected
				}
				//updatearptab();
			}
		}
	}
}

⌨️ 快捷键说明

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