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

📄 8019.lst.svn-base

📁 数字广播系统的开发源码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   8019                                                                 07/18/2007 15:08:04 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 8019
OBJECT MODULE PLACED IN E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C DB SB OE

line level    source

   1          #include "reg51.h"
   2          #include "config.h"
   3          //#include "GloblDef.h"
   4          //#include "TCPIPmem.h"
   5          #include "8019.h"
   6          #include <stdio.h>
   7          #include <absacc.h>
   8          
   9          #define RTLBaseAddr 0x8000
  10          
  11          /* to prevent call RTLSendPacket() when RTLSendPackt() is already is called, InSending
  12          is used. example when process run in RTLSendPacket() and a interrupt ocurr then call
  13          RTLSendPacket again, then the Register would have changed when interrupt return. */
  14          static unsigned char xdata InSending;
  15          
  16          static unsigned char xdata StartPageOfPacket;
  17          /* receive head information */
  18          /*struct RTLReceiveHeader
  19          {
  20                  unsigned char ReceiveStatus;
  21                  unsigned char NextPacketStartPage;
  22                  unsigned char PacketSizeLow;
  23                  unsigned char PacketSizeHigh;
  24          }Head;for some unknown resean Head must be a gloal value. */
  25          static unsigned char xdata Head[4];
  26          
  27          /* last trasmit start page */
  28          static unsigned char xdata LastSendStartPage;
  29          
  30          /****************************************************************************
  31          * 名称:WriteReg()
  32          * 功能:把数据写入RTL8019AS
  33          * 入口参数:    chPort          写入地址
  34                          chValue         写入数据
  35          * 出口参数:无
  36          ****************************************************************************/
  37          void  WriteReg(unsigned char chPort,unsigned char chValue)
  38          {
  39   1              unsigned char xdata chWriteRegTmp = 0xff;
  40   1              unsigned int xdata RTLAddr = 0x00;
  41   1      
  42   1      
  43   1              //方法一:*((volatile unsigned short *) RTLBaseAddr + chPort) ,看不出地址
  44   1              RTLAddr = ((volatile unsigned short *) RTLBaseAddr + chPort);
*** WARNING C260 IN LINE 44 OF E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C: '=': pointer truncation
  45   1              (*((volatile unsigned short *) RTLBaseAddr + chPort)) = chValue;
  46   1              //to debug
  47   1              chWriteRegTmp = (*((volatile unsigned short *) RTLBaseAddr + chPort));
  48   1      
  49   1              /*
  50   1              //方法二:用XBYTE直接读写
  51   1              XBYTE[RTLBaseAddr + chPort] = chValue;
  52   1              //to debug
  53   1              chWriteRegTmp = XBYTE[RTLBaseAddr + chPort]; */
  54   1              /*
C51 COMPILER V8.05a   8019                                                                 07/18/2007 15:08:04 PAGE 2   

  55   1              //方法三:*((volatile unsigned int *)RTLAddr)
  56   1              RTLAddr = RTLBaseAddr + chPort;
  57   1              (*((volatile unsigned int *)RTLAddr)) = chValue;
  58   1              //to debug
  59   1              chWriteRegTmp = (*((volatile unsigned int *)RTLAddr));*/
  60   1              /*
  61   1              //方法四:*((volatile unsigned char*)RTLAddr)
  62   1              RTLAddr = RTLBaseAddr + chPort;
  63   1              (*((volatile unsigned char*)RTLAddr)) = chValue;
  64   1              //to debug
  65   1              chWriteRegTmp = (*((volatile unsigned char*)RTLAddr));*/
  66   1              /*
  67   1              //方法五
  68   1              RTLAddr = ((volatile unsigned int*)RTLBaseAddr + chPort);
  69   1              *((volatile unsigned char xdata *)((volatile unsigned int*)RTLBaseAddr + chPort)) = chValue;
  70   1              chWriteRegTmp = *((volatile unsigned char xdata*)((volatile unsigned int*)RTLBaseAddr + chPort));
  71   1              */
  72   1      
  73   1      //      RTLAddr = (unsigned int xdata *)(RTLBaseAddr + chPort);
  74   1      //      XBYTE[RTLBaseAddr + chPort] = chValue;
  75   1      //      *((volatile unsigned char xdata *)RTLAddr) = chValue;
  76   1              //*RTLAddr = chValue;
  77   1      
  78   1              //to debug
  79   1      //        chWriteRegTmp = *((volatile unsigned char xdata *)RTLAddr);
  80   1             // chWriteRegTmp = *RTLAddr;
  81   1      
  82   1      //       RTLAddr = RTLBaseAddr + chPort;
  83   1      //       chWriteRegTmp  = XBYTE[RTLBaseAddr + chPort];
  84   1      
  85   1      }
  86          
  87          /****************************************************************************
  88          * 名称:ReadReg()
  89          * 功能:从RTL8019AS把数据读出
  90          * 入口参数:    chPort          读出地址
  91          * 出口参数:    Read读出数据
  92          ****************************************************************************/
  93          unsigned char ReadReg(unsigned char chPort) reentrant
  94          {
  95   1              unsigned char xdata chReadRegTmp = 0;
  96   1              unsigned int xdata RTLAddr = 0;
  97   1      
  98   1              //方法一
  99   1              RTLAddr = ((volatile unsigned short *) RTLBaseAddr + chPort);
*** WARNING C260 IN LINE 99 OF E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C: '=': pointer truncation
 100   1              chReadRegTmp = (*((volatile unsigned short *)RTLBaseAddr + chPort));
 101   1              return chReadRegTmp;
 102   1              /*
 103   1              //方法二:用XBYTE直接读写
 104   1              RTLAddr =RTLBaseAddr + chPort;
 105   1              chReadRegTmp = XBYTE[RTLBaseAddr + chPort];
 106   1              return chReadRegTmp; */
 107   1              /*
 108   1              //方法三
 109   1              RTLAddr =RTLBaseAddr + chPort;
 110   1              chReadRegTmp  = (*((volatile unsigned int *)RTLAddr));
 111   1              return chReadRegTmp; */
 112   1              /*
 113   1              //方法四
 114   1              RTLAddr =RTLBaseAddr + chPort;
 115   1              chReadRegTmp  = (*((volatile unsigned char*)RTLAddr));
C51 COMPILER V8.05a   8019                                                                 07/18/2007 15:08:04 PAGE 3   

 116   1              return chReadRegTmp; */
 117   1              /*
 118   1              //方法五
 119   1              RTLAddr = ((volatile unsigned int*)RTLBaseAddr + chPort);
 120   1              chReadRegTmp  = *((volatile unsigned char xdata *)((volatile unsigned int*)RTLBaseAddr + chPort));
 121   1              return chReadRegTmp; */
 122   1      
 123   1      }
*** WARNING C284 IN LINE 123 OF E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C: 'chReadRegTmp': in overlayable space, function no 
             -longer reentrant
*** WARNING C284 IN LINE 123 OF E:\NETBRO~1\TRUNK\NETBRO~1\VW\8019.C: 'RTLAddr': in overlayable space, function no longe
             -r reentrant
 124          /**********************************************************************
 125          **函数原型:    void  RTLPage(unsigned char chPageNum)
 126          **入口参数:?    unsigned char chPageNum: 要切换的页
 127          **出口参数:     无
 128          **返 回 值:    无
 129          **说    明:    选择页,可选择0,1,2三页,第四页ne000兼容芯片保留,
 130          set bit 7-6 in CR, CR_TXP must be 0(if 1 the packet is retrasmit)
 131          ************************************************************************/
 132          void RTLPage(unsigned char chPageNum) reentrant
 133          {
 134   1              unsigned char chTmp;
 135   1              chTmp= ReadReg(0x00);//command register
 136   1              chTmp = chTmp & 0x3B ;//注意txp位不能要
 137   1              chPageNum = chPageNum << 6;
 138   1              chTmp = chTmp | chPageNum;
 139   1              WriteReg(0x00,chTmp);
 140   1      }
 141          
 142          /**********************************************************************
 143          **函数原型:    void    SetMACAddr()
 144          **入口参数:
 145          **返 回 值:    无
 146          **说    明:    设置芯片物理地址
 147          ************************************************************************/
 148          void SetMACAddr(unsigned char xdata *MACAddr)
 149          {
 150   1              //把MAC地址写入MY——MAC——ID中
 151   1              RTLPage(1);
 152   1              WriteReg(0x01 , MACAddr[0]);
 153   1              WriteReg(0x02 , MACAddr[1]);
 154   1              WriteReg(0x03 , MACAddr[2]);
 155   1              WriteReg(0x04 , MACAddr[3]);
 156   1              WriteReg(0x05 , MACAddr[4]);
 157   1              WriteReg(0x06 , MACAddr[5]);
 158   1      
 159   1              RTLPage(0);
 160   1      }
 161          
 162          /* reset rtl8019 and init registers, MacAddr is MAC address */

⌨️ 快捷键说明

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