📄 tcpip.h
字号:
//////////////////////File//////////////////////////////////
//TCPIP.h
/////////TCPIP定义头文件/////// //////////////////////////
/*********************************************************/
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define icmpprotocal 1
#define udpprotocal 17
#define rt_size 5
//////////也可以考虑用一个指针,直接传输(以太网<-->串口)//////////////////////
//unsigned int idata comtxdread=0; //串口发送读指针
//unsigned int idata comtxdwrite=0; //串口发送写指针
//unsigned char xdata comtxdbuf[com_txd_buffer_size]; //串口的发送缓冲区
////////////////////////////////////////////////////////////////////////////////
uint idata comrxdread=0x0000;//receive buffer:0x0000--0x1fff
uint idata comrxdwrite=0x0000;
uint idata comtxdread=0x0000;//write buffer:0x2000--0x3fff
uint idata comtxdwrite=0x0000;
uint idata serrxdread=0x0000;//0x4000--0x43ff
uint idata serrxdwrite=0x0000;
uint idata sertxdread=0x0000;//0x4400--0x47ff
uint idata sertxdwrite=0x0000;
#define ser_txd_buffer_size 1000
#define ser_rxd_buffer_size 1000
uchar xdata serrxdbuf[ser_rxd_buffer_size];
uchar xdata sertxdbuf[ser_txd_buffer_size];
#define com_rxd_buffer_size 8000
#define com_txd_buffer_size 8000
uchar xdata comrxdbuf[com_rxd_buffer_size];
uchar xdata comtxdbuf[com_txd_buffer_size];
bit sertxdbufempty=1;
bit serrxdbuffull=0;
//接受用户命令输入的缓冲区(串口接收缓冲区)
//#define command_buffer_size 1000
//uchar xdata command_buffer[command_buffer_size];//0x4800-0x4bff
//#define NumberofArryofMyserial 30
//unsigned char xdata ProcessMyserial[NumberofArryofMyserial];//接收串口数据的数组(具体位置待定)
//unsigned char xdata NumberMySerial = 0;
//bit IsMySerial = 0;
///////////////////////////////////////////////////////////////////////////////
/////////////////define register table//////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#define physical_address_register0 0x01 //page 1 read/write
#define physical_address_register1 0x02
#define physical_address_register2 0x03
#define physical_address_register3 0x04
#define physical_address_register4 0x05
#define physical_address_register5 0x06
#define interrupt_status_register 0x07
#define command_register 0x00 //page 0 read/write
#define page_start_register 0x01 //page 0 write only and page 1 read only
#define current_page_register 0x07
#define page_stop_register 0x02
#define boundary_register 0x03
#define transmit_page_start_register 0x04
#define remote_byte_count_register0 0x0a
#define remote_byte_count_register1 0x0b
#define receive_config_register 0x0c
#define transmit_config_register 0x0d
#define data_config_register 0x0e
#define transmit_status_register 0x04 //page 0 read only
#define interrupt_mask_register 0x0f
#define current_page_register 0x07
#define transmit_byte_count_register0 0x05
#define transmit_byte_count_register1 0x06
#define multicast_address_register0 0x08
#define multicast_address_register1 0x09
#define multicast_address_register2 0x0A
#define multicast_address_register3 0x0B
#define multicast_address_register4 0x0C
#define multicast_address_register5 0x0D
#define multicast_address_register6 0x0E
#define multicast_address_register7 0x0F
#define remote_start_address_register0 0x08
#define remote_start_address_register1 0x09
#define remote_dma_port 0x10
#define reset_port 0x1f
#define remote_dma_port_high 0x11
#define config_register3 0x06 //page 3
#define config_register2 0x05 //page 3
#define command_register_93c46 0x01
#define tally_counter0 0x0d //page0 read
#define tally_counter1 0x0e //page0 read
#define tally_counter2 0x0f //page0 read
////////////////////////////////////////////////////////////////////
//////////////////网卡接口的寄存器地址///////////////////////////////
///////////////////////////////////////////////////////////////////////
#define R8019as_reg00 XBYTE[0x8000]//* 对应8019的内部基地址0x00300h*/I/O base address.
#define R8019as_reg01 XBYTE[0x8100]// to initialize in register CONFIG1
#define R8019as_reg02 XBYTE[0x8200]
#define R8019as_reg03 XBYTE[0x8300]
#define R8019as_reg04 XBYTE[0x8400]
#define R8019as_reg05 XBYTE[0x8500]
#define R8019as_reg06 XBYTE[0x8600]
#define R8019as_reg07 XBYTE[0x8700]
#define R8019as_reg08 XBYTE[0x8800]
#define R8019as_reg09 XBYTE[0x8900]
#define R8019as_reg10 XBYTE[0x8A00]
#define R8019as_reg11 XBYTE[0x8B00]
#define R8019as_reg12 XBYTE[0x8C00]
#define R8019as_reg13 XBYTE[0x8D00]
#define R8019as_reg14 XBYTE[0x8E00]
#define R8019as_reg15 XBYTE[0x8F00]
#define R8019as_reg16 XBYTE[0x9000]//dma port register
#define R8019as_reg17 XBYTE[0x9100]
#define R8019as_reg18 XBYTE[0x9200]
#define R8019as_reg19 XBYTE[0x9300]
#define R8019as_reg20 XBYTE[0x9400]
#define R8019as_reg21 XBYTE[0x9500]
#define R8019as_reg22 XBYTE[0x9600]
#define R8019as_reg23 XBYTE[0x9700]
#define R8019as_reg24 XBYTE[0x9800]
#define R8019as_reg25 XBYTE[0x9900]
#define R8019as_reg26 XBYTE[0x9A00]
#define R8019as_reg27 XBYTE[0x9B00]
#define R8019as_reg28 XBYTE[0x9C00]
#define R8019as_reg29 XBYTE[0x9D00]
#define R8019as_reg30 XBYTE[0x9E00]
#define R8019as_reg31 XBYTE[0x9F00]/*31f*/
///////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
union u {
unsigned int word;
struct {
unsigned char high;
unsigned char low;
}bytes;//字节顺序为高位在前的2byte结构
};
union v {
unsigned int word;
struct {
unsigned char low;
unsigned char high;
}bytes;
};
union w {
unsigned long dwords;
struct {
unsigned int high;
unsigned int low;
}words;
struct {
unsigned char byte3;
unsigned char byte2;
unsigned char byte1;
unsigned char byte0;
}bytes;
};
union ethernet_address_type
{
unsigned int words[3];
unsigned char bytes[6];
};
union ip_address_type
{
unsigned long dwords;
unsigned int words[2];
unsigned char bytes[4];
};
union arp_table_type
{
unsigned char bytes[12];
unsigned int words[6];
struct {
unsigned char status;
unsigned char ttl;
unsigned int ip_address[2];
unsigned int ethernet_address[3];
//状态,生存时间,ip地址,以太网地址
}arp;
};
/*以太网帧*/
struct ethernet
{
unsigned char status; /*接收状态*/
unsigned char nextpage; /*下一个页*/
unsigned int length; /*以太网长度,以字节为单位,*/
unsigned int destnodeid[3]; /*目的网卡地址*/
unsigned int sourcenodeid[3]; /*源网卡地址*/
unsigned int protocal; /*下一层协议 */
unsigned char packet[1518]; /*包的内容*/
};
struct retransmit
{
unsigned char status; /*重发缓冲区状态*/
unsigned char timeout; /*超时时间值,单位为10毫秒,最大2.55秒*/
unsigned int length; /*以太网长度,以字节为单位,*/
unsigned int destnodeid[3]; /*目的网卡地址*/
unsigned int sourcenodeid[3]; /*源网卡地址*/
unsigned int protocal; /*下一层协议 */
unsigned char packet[1518]; /*包的内容*/
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -