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

📄 tcpip.h

📁 这是一个用单片机控制网卡传输的程序,集成了TCP/IP协议,使用硬件为89C51+RTL8019,另外传输另一端是计算机串口,可以方便的实现数据验证
💻 H
📖 第 1 页 / 共 2 页
字号:
//////////////////////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 + -