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

📄 ir.c

📁 一款居于世纪民生CS6208的带TCP-IP网络功能的8位MCU内核的芯片的应用代码。
💻 C
📖 第 1 页 / 共 4 页
字号:
    CRC[1] = PC_MACADDRESS[1];
    CRC[2] = PC_MACADDRESS[2];
    CRC[3] = PC_MACADDRESS[3];
    CRC[4] = PC_MACADDRESS[4];
    CRC[5] = PC_MACADDRESS[5];
								 
    //source address
    CRC[6] = MACADDRESS[0];
    CRC[7] = MACADDRESS[1];
    CRC[8] = MACADDRESS[2];
    CRC[9] = MACADDRESS[3];
    CRC[10] = MACADDRESS[4];
    CRC[11] = MACADDRESS[5];

	//protocol
	CRC[12] = 0x08;
    CRC[13] = 0x00;

    CRC[14] = 0x45;
	CRC[15] = 0x00;
	CRC[16] = (28+7+UDP_LENGTH)/256;
	CRC[17] = (28+7+UDP_LENGTH)%256;
	CRC[18] = 0xA8;
	CRC[19] = 0x00;
	CRC[20] = 0x00;
	CRC[21] = 0x00;
	CRC[22] = 0x80;
	CRC[23] = 0x11;
	CRC[24] = 0x00;
	CRC[25] = 0x00;

	CRC[26] = IPADDRESS[0];
	CRC[27] = IPADDRESS[1];
	CRC[28] = IPADDRESS[2];
	CRC[29] = IPADDRESS[3];
	CRC[30] = PC_IPADDRESS[0];
	CRC[31] = PC_IPADDRESS[1];
	CRC[32] = PC_IPADDRESS[2];
	CRC[33] = PC_IPADDRESS[3];
    
	CRC_SUM = 0;
	for (i=14;i<34;i+=2)
        {
           CRC_SUM = CRC_SUM + CRC[i]*256 + CRC[i+1];
           CRC_SUM = CRC_SUM%65536 + CRC_SUM/65536;
        }
    CRC_SUM = 0xFFFF-CRC_SUM;
    CRC[24] = CRC_SUM/256;
    CRC[25] = CRC_SUM%256;
}
void UDP(unsigned char command)
{
 
    NIC_TPSTART = TPSTART;
	
    NIC_XMIT_BUFFER[0] = CRC[0];
	NIC_XMIT_BUFFER[1] = CRC[1];
	NIC_XMIT_BUFFER[2] = CRC[2];
	NIC_XMIT_BUFFER[3] = CRC[3];
	NIC_XMIT_BUFFER[4] = CRC[4];
	NIC_XMIT_BUFFER[5] = CRC[5];
	NIC_XMIT_BUFFER[6] = CRC[6];
	NIC_XMIT_BUFFER[7] = CRC[7];
	NIC_XMIT_BUFFER[8] = CRC[8];
	NIC_XMIT_BUFFER[9] = CRC[9];
	NIC_XMIT_BUFFER[10] = CRC[10];
	NIC_XMIT_BUFFER[11] = CRC[11];
	NIC_XMIT_BUFFER[12] = CRC[12];
	NIC_XMIT_BUFFER[13] = CRC[13];
	NIC_XMIT_BUFFER[14] = CRC[14];
	NIC_XMIT_BUFFER[15] = CRC[15];
	NIC_XMIT_BUFFER[16] = CRC[16];
	NIC_XMIT_BUFFER[17] = CRC[17];
	NIC_XMIT_BUFFER[18] = CRC[18];
	NIC_XMIT_BUFFER[19] = CRC[19];
	NIC_XMIT_BUFFER[20] = CRC[20];
	NIC_XMIT_BUFFER[21] = CRC[21];
	NIC_XMIT_BUFFER[22] = CRC[22];
	NIC_XMIT_BUFFER[23] = CRC[23];
	NIC_XMIT_BUFFER[24] = CRC[24];
	NIC_XMIT_BUFFER[25] = CRC[25];
	NIC_XMIT_BUFFER[26] = CRC[26];
	NIC_XMIT_BUFFER[27] = CRC[27];
	NIC_XMIT_BUFFER[28] = CRC[28];
	NIC_XMIT_BUFFER[29] = CRC[29];
	NIC_XMIT_BUFFER[30] = CRC[30];
	NIC_XMIT_BUFFER[31] = CRC[31];
	NIC_XMIT_BUFFER[32] = CRC[32];
	NIC_XMIT_BUFFER[33] = CRC[33];
       
	NIC_XMIT_BUFFER[34] = UDP_PORT_H;
	NIC_XMIT_BUFFER[35] = UDP_PORT_L;
	NIC_XMIT_BUFFER[36] = UDP_PORT_H;
	NIC_XMIT_BUFFER[37] = UDP_PORT_L;
	NIC_XMIT_BUFFER[38] = (8+7+UDP_LENGTH)/256;
	NIC_XMIT_BUFFER[39] = (8+7+UDP_LENGTH)%256;
	NIC_XMIT_BUFFER[40] = 0x00;
	NIC_XMIT_BUFFER[41] = 0x00;

	NIC_XMIT_BUFFER[42] = 'S';
	NIC_XMIT_BUFFER[43] = 'E';
	NIC_XMIT_BUFFER[44] = 'N';
	NIC_XMIT_BUFFER[45] = 'C';
	NIC_XMIT_BUFFER[46] = 'I';
	NIC_XMIT_BUFFER[47] = 'T';
	NIC_XMIT_BUFFER[48] = 'Y';

    NIC_XMIT_BUFFER[49] = command;

    	
    NIC_XMIT_BUFFER[50] = ALARM_BUFFER[0]; 
    NIC_XMIT_BUFFER[51] = ALARM_BUFFER[1];
	NIC_XMIT_BUFFER[52] = ALARM_BUFFER[2]|__warmed;
	NIC_XMIT_BUFFER[53] = ALARM_BUFFER[3];

	NIC_XMIT_BUFFER[54] = (METER0.AMOUNT >> 16) & 0xFF;
	NIC_XMIT_BUFFER[55] = (METER0.AMOUNT >> 8) & 0xFF;
	NIC_XMIT_BUFFER[56] = (METER0.AMOUNT ) & 0xFF;
	NIC_XMIT_BUFFER[57] = (METER1.AMOUNT >> 16) & 0xFF;
	NIC_XMIT_BUFFER[58] = (METER1.AMOUNT >> 8) & 0xFF;
	NIC_XMIT_BUFFER[59] = (METER1.AMOUNT ) & 0xFF;
	NIC_XMIT_BUFFER[60] = (METER2.AMOUNT >> 16) & 0xFF;
	NIC_XMIT_BUFFER[61] = (METER2.AMOUNT >> 8) & 0xFF;
	NIC_XMIT_BUFFER[62] = (METER2.AMOUNT ) & 0xFF;
	NIC_XMIT_BUFFER[63] = (METER3.AMOUNT >> 16) & 0xFF;
	NIC_XMIT_BUFFER[64] = (METER3.AMOUNT >> 8) & 0xFF;
	NIC_XMIT_BUFFER[65] = (METER3.AMOUNT ) & 0xFF;
	NIC_XMIT_BUFFER[66] = (METER4.AMOUNT >> 16) & 0xFF;
	NIC_XMIT_BUFFER[67] = (METER4.AMOUNT >> 8) & 0xFF;
	NIC_XMIT_BUFFER[68] = (METER4.AMOUNT ) & 0xFF;
	NIC_XMIT_BUFFER[69] = (METER5.AMOUNT >> 16) & 0xFF;
	NIC_XMIT_BUFFER[70] = (METER5.AMOUNT >> 8) & 0xFF;
	NIC_XMIT_BUFFER[71] = (METER5.AMOUNT ) & 0xFF;
	NIC_XMIT_BUFFER[72] = 0;
	NIC_XMIT_BUFFER[73] = 0;
	NIC_XMIT_BUFFER[74] = 0;
	NIC_XMIT_BUFFER[75] = 0;
	NIC_XMIT_BUFFER[76] = 0;
    NIC_XMIT_BUFFER[77] = 0;

	NIC_XMIT_BUFFER[78] = TIME[0];
	NIC_XMIT_BUFFER[79] = TIME[1];
	NIC_XMIT_BUFFER[80] = TIME[2];
	NIC_XMIT_BUFFER[81] = TIME[3];
	NIC_XMIT_BUFFER[82] = TIME[4];
	NIC_XMIT_BUFFER[83] = TIME[5];
	NIC_XMIT_BUFFER[84] = TIME[6];

	NIC_XMIT_BUFFER[85] = CONTROL[0];
	NIC_XMIT_BUFFER[86] = CONTROL[1];
	NIC_XMIT_BUFFER[87] = CONTROL[2];
	NIC_XMIT_BUFFER[88] = CONTROL[3];

    NIC_XMIT_BUFFER[89] = METER0.PULSE;
    NIC_XMIT_BUFFER[90] = METER0.WIDTH;
	NIC_XMIT_BUFFER[91] = METER1.PULSE;
    NIC_XMIT_BUFFER[92] = METER1.WIDTH;
	NIC_XMIT_BUFFER[93] = METER2.PULSE;
    NIC_XMIT_BUFFER[94] = METER2.WIDTH;
	NIC_XMIT_BUFFER[95] = METER3.PULSE;
    NIC_XMIT_BUFFER[96] = METER3.WIDTH;
	NIC_XMIT_BUFFER[97] = METER4.PULSE;
    NIC_XMIT_BUFFER[98] = METER4.WIDTH;
	NIC_XMIT_BUFFER[99] = METER5.PULSE;
    NIC_XMIT_BUFFER[100] = METER5.WIDTH;
	NIC_XMIT_BUFFER[101] = 0;
    NIC_XMIT_BUFFER[102] = 0;
	NIC_XMIT_BUFFER[103] = 0;
    NIC_XMIT_BUFFER[104] = 0;

    NIC_XMIT_BUFFER[105] = __wmeterquantity;
	NIC_XMIT_BUFFER[106] = METER0.TYPE;
	NIC_XMIT_BUFFER[107] = METER1.TYPE;
	NIC_XMIT_BUFFER[108] = METER2.TYPE;
	NIC_XMIT_BUFFER[109] = METER3.TYPE;
	NIC_XMIT_BUFFER[110] = METER4.TYPE;
	NIC_XMIT_BUFFER[111] = METER5.TYPE;
	NIC_XMIT_BUFFER[112] = 0;
	NIC_XMIT_BUFFER[113] = 0;

	NIC_XMIT_BUFFER[114] = MACADDRESS[0];
	NIC_XMIT_BUFFER[115] = MACADDRESS[1];
	NIC_XMIT_BUFFER[116] = MACADDRESS[2];
	NIC_XMIT_BUFFER[117] = MACADDRESS[3];
	NIC_XMIT_BUFFER[118] = MACADDRESS[4];
	NIC_XMIT_BUFFER[119] = MACADDRESS[5];

	NIC_XMIT_BUFFER[120] = IPADDRESS[0];
    NIC_XMIT_BUFFER[121] = IPADDRESS[1];
	NIC_XMIT_BUFFER[122] = IPADDRESS[2];
	NIC_XMIT_BUFFER[123] = IPADDRESS[3];
	/*for (i=49;i++;i<UDP_LENGTH)
	    {
           NIC_XMIT_BUFFER[i] = 0x00;
		}*/
                                
	NIC_TBCNT0 = 0x00;
    NIC_TBCNT1 = 0x05;
    NIC_CR = CR_Start|CR_Xmit;
	//CHECK_XMIT();
}
void ARPREQ()
{

    //ARPREQ();
	NIC_TPSTART = TPSTART;

    //destination address
    NIC_XMIT_BUFFER[0] = 0xFF;
    NIC_XMIT_BUFFER[1] = 0xFF;
    NIC_XMIT_BUFFER[2] = 0xFF;
    NIC_XMIT_BUFFER[3] = 0xFF;
    NIC_XMIT_BUFFER[4] = 0xFF;
    NIC_XMIT_BUFFER[5] = 0xFF;
								 
    //source address
    NIC_XMIT_BUFFER[6] = MACADDRESS[0];
    NIC_XMIT_BUFFER[7] = MACADDRESS[1];
    NIC_XMIT_BUFFER[8] = MACADDRESS[2];
    NIC_XMIT_BUFFER[9] = MACADDRESS[3];
    NIC_XMIT_BUFFER[10] = MACADDRESS[4];
    NIC_XMIT_BUFFER[11] = MACADDRESS[5];
    //port
    NIC_XMIT_BUFFER[12] = 0x08;
    NIC_XMIT_BUFFER[13] = 0x06;
    NIC_XMIT_BUFFER[14] = 0x00;
    NIC_XMIT_BUFFER[15] = 0x01;
    NIC_XMIT_BUFFER[16] = 0x08;
    NIC_XMIT_BUFFER[17] = 0x00;
    NIC_XMIT_BUFFER[18] = 0x06;
    NIC_XMIT_BUFFER[19] = 0x04;
    NIC_XMIT_BUFFER[20] = 0x00;
    NIC_XMIT_BUFFER[21] = 0x01;
    //source MAC address
    NIC_XMIT_BUFFER[22] = MACADDRESS[0];
    NIC_XMIT_BUFFER[23] = MACADDRESS[1];
    NIC_XMIT_BUFFER[24] = MACADDRESS[2];
    NIC_XMIT_BUFFER[25] = MACADDRESS[3];
    NIC_XMIT_BUFFER[26] = MACADDRESS[4];
    NIC_XMIT_BUFFER[27] = MACADDRESS[5];
    //source IP address
    NIC_XMIT_BUFFER[28] = IPADDRESS[0];
    NIC_XMIT_BUFFER[29] = IPADDRESS[1];
    NIC_XMIT_BUFFER[30] = IPADDRESS[2];
    NIC_XMIT_BUFFER[31] = IPADDRESS[3];
    //destination MAC and IP address
    NIC_XMIT_BUFFER[32] = 0;
    NIC_XMIT_BUFFER[33] = 0;
    NIC_XMIT_BUFFER[34] = 0;
    NIC_XMIT_BUFFER[35] = 0;
    NIC_XMIT_BUFFER[36] = 0;
    NIC_XMIT_BUFFER[37] = 0;
    NIC_XMIT_BUFFER[38] = IPADDRESS[0];
    NIC_XMIT_BUFFER[39] = IPADDRESS[1];
    NIC_XMIT_BUFFER[40] = IPADDRESS[2];
    NIC_XMIT_BUFFER[41] = IPADDRESS[3];
    //start xmit
    NIC_TBCNT0 = 0x00;
    NIC_TBCNT1 = 0x05;
    NIC_CR = CR_Start|CR_Xmit;                        
}

void Init_NIC()
{

    PHYCTRL = 0x01;//T10 enable and internal 10M phy enable
    
    NIC_CR = CR_Stop;
	
	NIC_IMR = 0x00;
	NIC_ISR = 0xFF;
    
    NIC_CR = CR_Stop|CR_Page1; //change to page1
    NIC_PAR0 = MACADDRESS[0];
    NIC_PAR1 = MACADDRESS[1];
    NIC_PAR2 = MACADDRESS[2];
    NIC_PAR3 = MACADDRESS[3];
    NIC_PAR4 = MACADDRESS[4];
    NIC_PAR5 = MACADDRESS[5];
	NIC_MAR0 = 0xFF;
    NIC_MAR1 = 0xFF;
	NIC_MAR2 = 0xFF;
	NIC_MAR3 = 0xFF;
	NIC_MAR4 = 0xFF;
	NIC_MAR5 = 0xFF;
	NIC_MAR6 = 0xFF;
	NIC_MAR7 = 0xFF;
    NIC_CR1 = CR_Stop|CR_Page0;//return to page 0

    NIC_RCR = RCR_AB|RCR_AP;
    //NIC_RCR = RCR_AB;
	NIC_RPSTART = RPSTART;
	NIC_RPSTOP = RPSTOP;
	NIC_BNRY = RPSTART;

    NIC_CR = CR_Stop|CR_Page1; //change to page1
	NIC_CURR = RPSTART + 1;
    NIC_CR1 = CR_Stop|CR_Page0;//return to page 0


	NextPacket = RPSTART + 1;

	//NIC_IMR = IMR_RcvOKEn|IMR_XmtOkEn|IMR_RcvErrorEn|IMR_XmtErrorEn|IMR_RcvBufOverFlowEn;
    NIC_IMR = IMR_RcvOKEn|IMR_RcvBufOverFlowEn;

	NIC_CR = CR_Start;
}
/**********************ethernet end**********************/

⌨️ 快捷键说明

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