📄 8019.lst.svn-base
字号:
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 + -