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

📄 eth.lst

📁 用c8051f340基于51单片机上网
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   ETH                                                                   11/04/2008 16:04:31 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE ETH
OBJECT MODULE PLACED IN Eth.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.exe Eth.c DB OE

line level    source

   1          //-----------------------------------------------------------------------------
   2          // Copyright (c) 2002 Jim Brady
   3          // Do not use commercially without author's permission
   4          // Last revised August 2002
   5          // Net ETH.C
   6          //
   7          // This module is the Ethernet layer
   8          //-----------------------------------------------------------------------------
   9          #include <string.h>
  10          #include "global.h"
  11          #include <stdlib.h>
  12          #include "C8051f.h"
*** WARNING C318 IN LINE 12 OF Eth.c: can't open file 'C8051f.h'
  13          ///#include "net.h"
  14          #include "serial.h"
*** WARNING C318 IN LINE 14 OF Eth.c: can't open file 'serial.h'
  15          #include "arp.h"
  16          #include "ip.h"
  17          #include "eth.h"
  18          
  19          
  20          #define reg00   XBYTE[0x8000]   //reg00- 10为isa网卡接口的寄存器地址300-310;
  21          #define reg01   XBYTE[0x8001]
  22          #define reg02   XBYTE[0x8002]
  23          #define reg03   XBYTE[0x8003]
  24          #define reg04   XBYTE[0x8004]
  25          #define reg05   XBYTE[0x8005]
  26          #define reg06   XBYTE[0x8006]
  27          #define reg07   XBYTE[0x8007]
  28          #define reg08   XBYTE[0x8008]
  29          #define reg09   XBYTE[0x8009]
  30          #define reg0a   XBYTE[0x800a]
  31          #define reg0b   XBYTE[0x800b]
  32          #define reg0c   XBYTE[0x800c]
  33          #define reg0d   XBYTE[0x800d]
  34          #define reg0e   XBYTE[0x800e]
  35          #define reg0f   XBYTE[0x800f]
  36          #define reg10   XBYTE[0x8010]
  37          
  38          bit txd_buffer_select=0;                //选择网卡的发送缓冲区  
  39          extern UCHAR idata debug;
  40          extern UCHAR xdata arpbuf[];
  41          extern UCHAR xdata my_hwaddr[]; 
  42          
  43          void Delay1ms(unsigned char T);
  44          
  45          extern UCHAR idata rcve_buf_allocated;
  46          extern UINT volatile event_word;
  47          
  48          
  49          
  50          #define Rtl8019ResetLow         P5 &= ~(0x4);   // P52 
  51          #define Rtl8019ResetHigh        P5 |= 0x4;              // P52
  52          
  53          //------------------------------------------------------------------------
C51 COMPILER V8.08   ETH                                                                   11/04/2008 16:04:31 PAGE 2   

  54          // Initialize the Cirrus Logic 8019 chip
  55          //------------------------------------------------------------------------
  56          
  57          void page(unsigned char pagenumber)
  58          {
  59   1              unsigned char data temp;
  60   1              temp=reg00;             
*** ERROR C202 IN LINE 60 OF ETH.C: 'XBYTE': undefined identifier
  61   1              temp=temp&0x3B ;
  62   1              pagenumber=pagenumber <<6;
  63   1              temp=temp | pagenumber;
  64   1              reg00=temp;
*** ERROR C202 IN LINE 64 OF ETH.C: 'XBYTE': undefined identifier
  65   1      }
  66          
  67          void Rtl8019AS_Reset() //复位网卡
  68          {
  69   1              Rtl8019ResetHigh;;      
*** ERROR C202 IN LINE 69 OF ETH.C: 'P5': undefined identifier
  70   1              Delay1ms(200);
  71   1              Rtl8019ResetLow;
*** ERROR C202 IN LINE 71 OF ETH.C: 'P5': undefined identifier
  72   1              Delay1ms(200);
  73   1      }
  74          
  75          void ReadRtl8019NodeID(void)//读出网卡的物理地址存到my_ethernet_address.bytes[6]里  
  76          {
  77   1              unsigned char data i;
  78   1              page(0);
  79   1              reg09=0;        //读取网卡的ram的地址为0x0000 
*** ERROR C202 IN LINE 79 OF ETH.C: 'XBYTE': undefined identifier
  80   1              reg08=0;
*** ERROR C202 IN LINE 80 OF ETH.C: 'XBYTE': undefined identifier
  81   1              reg0b=0;
*** ERROR C202 IN LINE 81 OF ETH.C: 'XBYTE': undefined identifier
  82   1              reg0a=12;       //读取12个字节
*** ERROR C202 IN LINE 82 OF ETH.C: 'XBYTE': undefined identifier
  83   1              reg00=0x0a;     //读ram
*** ERROR C202 IN LINE 83 OF ETH.C: 'XBYTE': undefined identifier
  84   1              for (i=0;i<6;i++)
  85   1              { 
  86   2      //      my_hwaddr[i]=reg10;
  87   2      //      my_hwaddr[i]=reg10;
  88   2              }
  89   1      }
  90          
  91          void WriteRtl8019NodeID()
  92          {
  93   1              page(1);
  94   1              reg01=my_hwaddr[0];
*** ERROR C202 IN LINE 94 OF ETH.C: 'XBYTE': undefined identifier
  95   1              reg02=my_hwaddr[1];
*** ERROR C202 IN LINE 95 OF ETH.C: 'XBYTE': undefined identifier
  96   1              reg03=my_hwaddr[2];
*** ERROR C202 IN LINE 96 OF ETH.C: 'XBYTE': undefined identifier
  97   1              reg04=my_hwaddr[3];
*** ERROR C202 IN LINE 97 OF ETH.C: 'XBYTE': undefined identifier
  98   1              reg05=my_hwaddr[4];
*** ERROR C202 IN LINE 98 OF ETH.C: 'XBYTE': undefined identifier
  99   1              reg06=my_hwaddr[5];
*** ERROR C202 IN LINE 99 OF ETH.C: 'XBYTE': undefined identifier
 100   1              page(0);
C51 COMPILER V8.08   ETH                                                                   11/04/2008 16:04:31 PAGE 3   

 101   1      }
 102          
 103          void init_8019(void)
 104          {
 105   1              Delay1ms(10);
 106   1              Rtl8019AS_Reset();              //复位8019
 107   1              R8019_CHIP_SELECT;
*** ERROR C202 IN LINE 107 OF ETH.C: 'R8019_CHIP_SELECT': undefined identifier
 108   1              reg00=0x21;                             //使芯片处于停止模式,这时进行寄存器设置 停止模式下,将不会发送和接收数据包
*** ERROR C202 IN LINE 108 OF ETH.C: 'XBYTE': undefined identifier
 109   1              Delay1ms(10);                   //延时10毫秒,确保芯片进入停止模式
 110   1              page(0);
 111   1              reg0a=0x00;     reg0b=0x00;
*** ERROR C202 IN LINE 111 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 111 OF ETH.C: 'XBYTE': undefined identifier
 112   1              reg0c= 0xe0;                    //monitor mode (no packet receive)
*** ERROR C202 IN LINE 112 OF ETH.C: 'XBYTE': undefined identifier
 113   1              reg0d= 0xe2;                    //loop back mode 使芯片处于mon和loopback模式,跟外部网络断开  
*** ERROR C202 IN LINE 113 OF ETH.C: 'XBYTE': undefined identifier
 114   1              reg01=0x4c;     reg02=0x80;     reg03=0x4c;     reg04=0x40;
*** ERROR C202 IN LINE 114 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 114 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 114 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 114 OF ETH.C: 'XBYTE': undefined identifier
 115   1              reg07=0xff;                             //清除所有中断标志位
*** ERROR C202 IN LINE 115 OF ETH.C: 'XBYTE': undefined identifier
 116   1              reg0f=0x00;                             //disable all interrupt
*** ERROR C202 IN LINE 116 OF ETH.C: 'XBYTE': undefined identifier
 117   1              reg0e=0xc8;                             //byte dma 8位dma方式
*** ERROR C202 IN LINE 117 OF ETH.C: 'XBYTE': undefined identifier
 118   1              page(1);
 119   1              reg07=0x4d;     reg08=0x00;     reg09=0x00;     reg0a=0x00;     reg0b=0x00;     
*** ERROR C202 IN LINE 119 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 119 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 119 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 119 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 119 OF ETH.C: 'XBYTE': undefined identifier
 120   1              reg0c=0x00;     reg0d=0x00;     reg0e=0x00;     reg0f=0x00;
*** ERROR C202 IN LINE 120 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 120 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 120 OF ETH.C: 'XBYTE': undefined identifier
*** ERROR C202 IN LINE 120 OF ETH.C: 'XBYTE': undefined identifier
 121   1              reg00=0x22;                             //这时让芯片开始工作
*** ERROR C202 IN LINE 121 OF ETH.C: 'XBYTE': undefined identifier
 122   1              ReadRtl8019NodeID();    //读出网卡的物理地址48位  
 123   1              WriteRtl8019NodeID();   //将网卡地址写入到mar寄存器  
 124   1              page(0);
 125   1              reg0c=0xcc;                             //将网卡设置成正常的模式,跟外部网络连接
*** ERROR C202 IN LINE 125 OF ETH.C: 'XBYTE': undefined identifier
 126   1              reg0d=0xe0;
*** ERROR C202 IN LINE 126 OF ETH.C: 'XBYTE': undefined identifier
 127   1              reg00=0x22;                             //这时让芯片开始工作
*** ERROR C202 IN LINE 127 OF ETH.C: 'XBYTE': undefined identifier
 128   1              reg07=0xff;                             //清除所有中断标志位
*** ERROR C202 IN LINE 128 OF ETH.C: 'XBYTE': undefined identifier
 129   1      }
 130          
 131          //------------------------------------------------------------------------
 132          // This functions checks 8019 status then sends an ethernet
 133          // frame to it by calling an assembler function. 
 134          //------------------------------------------------------------------------
 135          
C51 COMPILER V8.08   ETH                                                                   11/04/2008 16:04:31 PAGE 4   

 136          void send_frame(UCHAR xdata * outbuf, UINT len)/*发送一个数据包的命令,长度最小为60字节,最大1514字节*/
 137          {
 138   1      UCHAR i;
 139   1      UINT ii;
 140   1              page(0);
 141   1              if(len<60)len=60;
 142   1              txd_buffer_select=!txd_buffer_select;
 143   1              if      (txd_buffer_select)
 144   1                      reg09=0x40 ;    //txdwrite highaddress
*** ERROR C202 IN LINE 144 OF ETH.C: 'XBYTE': undefined identifier
 145   1              else
 146   1              reg09=0x46 ;    //txdwrite highaddress
*** ERROR C202 IN LINE 146 OF ETH.C: 'XBYTE': undefined identifier
 147   1              reg08=0x00;             //read page address low
*** ERROR C202 IN LINE 147 OF ETH.C: 'XBYTE': undefined identifier
 148   1              reg0b=len>>8;           //read count high
*** ERROR C202 IN LINE 148 OF ETH.C: 'XBYTE': undefined identifier
 149   1              reg0a=len&0xff;         //read count low;
*** ERROR C202 IN LINE 149 OF ETH.C: 'XBYTE': undefined identifier
 150   1              reg00=0x12;                     //write dma, page0
*** ERROR C202 IN LINE 150 OF ETH.C: 'XBYTE': undefined identifier
 151   1              for     (ii=0;ii<len;ii++)      //for   (ii=4;ii<len+4;ii++)  //是否加4有待验证
 152   1              {
 153   2                 reg10=*(outbuf+ii);  
*** ERROR C202 IN LINE 153 OF ETH.C: 'XBYTE': undefined identifier
 154   2              }
 155   1      
 156   1              /* 以下3句为中止dma的操作,可以不要            */
 157   1              reg0b=0x00;             //read count high   中止DMA操作
*** ERROR C202 IN LINE 157 OF ETH.C: 'XBYTE': undefined identifier
 158   1              reg0a=0x00;             //read count low;
*** ERROR C202 IN LINE 158 OF ETH.C: 'XBYTE': undefined identifier
 159   1              reg00=0x22;             //complete dma page 0
*** ERROR C202 IN LINE 159 OF ETH.C: 'XBYTE': undefined identifier
 160   1      
 161   1              for(i=0;i<16;i++)       //最多重发16次
 162   1              {
 163   2                      for(ii=0;ii<1000;ii++)  //检查txp为是否为低
 164   2                      {

⌨️ 快捷键说明

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