📄 427.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://202.112.58.200"><font face="黑体"><big><big>Tsinghua</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> 嵌入式系统 (BM: turbolinux jacobw) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="嵌入式系统.htm">回到开始</a>][<a href="398.htm">上一层</a>][<a href="428.htm">下一篇</a>]
<hr><p align="left"><small>发信人: turbolinux (hoho~神啊,救救我吧...), 信区: Embedded <br>
标 题: 单片机与TCP/IP网络 (七) <br>
发信站: BBS 水木清华站 (Fri Jul 13 00:35:16 2001) <br>
<br>
单片机与TCP/IP网络 <br>
--版主 老古 http://www.laogu.com <br>
<br>
(七)网卡上电复位 <br>
<br>
<br>
------------------------------------------------------------------------ <br>
-------- <br>
<br>
----当你买到一个新的RTL8019AS网卡,你要先将该网卡设置为以下的配置: <br>
<br>
操作方式Operating Mode:跳线方式Jumperless(不是即插即用Plug and Play) <br>
<br>
端口I/O base:0240-25FH <br>
中断Interrupt: 2/9(我的程序没有用到网卡中断,所以也可以不用设置) <br>
你要将这个网卡插到你的电脑里,用这个网卡带的设置程序RSET8019.exe将这个卡 <br>
按照上面的配置设置好。(最好在纯DOS方式下设置) . <br>
<br>
--在介绍网卡驱动程序之前,先介绍一下RTL8019AS的基本情况: <br>
<br>
输入输出地址:共32个,地址偏移量为00H--1FH,(对应于240H--25FH,240H的地 <br>
址偏移量为0,241H的地址偏移量为1,。。。25FH的地址偏移量为1FH)。 <br>
<br>
其中00H--0FH共16个地址,为寄存器地址。 <br>
10H--17H共8个地址,为DMA地址。 <br>
18H--1FH共8个地址,为复位端口。 <br>
对于8位的操作方式,上面的地址中只有18个是有用的: <br>
00H--0FH共16个寄存器地址。 <br>
10H DMA地址 (10H--17H的8个地址是一样的,都可以用来做DMA端口,只要用其 <br>
中的一个就可以了) <br>
1FH 复位地址。(18H到1FH共8个地址都是复位地址,每个地址的功能都是一样的 <br>
,只要其中的一个就可以了) <br>
<br>
寄存器:00H--0FH共16个地址是寄存器地址。寄存器分成4页PAGE0--PAGE3,但 <br>
NE2000兼容的寄存器只有3页(Page0-Page2),(第四页是RTL8019AS自己定义的, <br>
我们不用去管这些寄存器,因为你对第四页的寄存器的操作仅对这个网卡是有效的 <br>
,如果你换成其他Ne2000兼容的网卡,你的程序将无法正常运行。 为了保证驱动 <br>
程序对所有Ne2000的网卡有效,不要去操作第四页的寄存器) <br>
由于寄存器较多,我将在用到该寄存器的时候才对该寄存器介绍。 <br>
<br>
---对网卡进行复位: <br>
这是网卡驱动程序的需要做的第一个内容,由于我们将网卡设置为跳线模式,而不 <br>
是即插即用的模式,RTL8019AS.PDF中介绍的PLUG and PLAY的一些过程,我们不需 <br>
要做,因为单片机的资源有限,能够减少的操作,都尽量减少。 <br>
<br>
程序从main()开始执行: <br>
<br>
#include <my.h> /*my.h 为作者所用的头文件,包含所有89c52寄存器的大写和小 <br>
写的定义, <br>
和一些常用的子函数,一些宏的定义*/ <br>
main() <br>
<br>
{ <br>
<br>
delaymsecond(10);//延时大约1秒,保证电源稳定和网卡自身的上电完成。 <br>
netcardreset();//复位网卡的子程序 <br>
<br>
。。。。 <br>
<br>
} <br>
下面介绍网卡的复位子程序: <br>
#define reg1f XBYTE[0xdf00] //网卡的复位端口的地址,对应于网卡的地址 <br>
25FH。 <br>
25FH。 <br>
#define uint unsigned int //uint 代表unsigned int ,作者一般使用缩写 <br>
uint <br>
#define uchar unsigned char //uchar 代表unsigned char,我比较懒,不愿意多 <br>
写 <br>
sbit reset=p3^4; //单片机的p3.4脚连接到网卡的RSTDRV复位引脚 <br>
<br>
void netcardreset() <br>
{uint data i; <br>
uchar data temp; <br>
reset=1; //使网卡的RSTDRV引脚变成高电平,网卡是高电平复位的。 <br>
for(i=0;i<250;i++);//延时程序 <br>
reset=0; //使网卡的RSTDRV引脚变成低电平,网卡上电复位完毕 <br>
for(i=0;i<250;i++); <br>
temp=reg1f;//读网卡的复位端口 <br>
reg1f=temp; //写网卡的复位端口 <br>
for(i=0;i<250;i++); <br>
<br>
<br>
} <br>
上面所讲的实际上是网卡复位的两种情况, <br>
reset=1;reset=0相当于冷复位 <br>
temp=reg1f;reg1f=temp相当于热复位 <br>
对网卡的复位端口的读写将复位网卡,网卡内部将执行复位过程。读写是随意的, <br>
写入任意的数都将复位网卡。 <br>
实际上只要使用冷复位就可以了,热复位程序可以不要。热复位主要在电脑里有用 <br>
,冷复位就像电脑的冷启动,热复位相当于电脑的热启动。 <br>
<br>
--作者的复位网卡的过程是简化了的,一个电脑里的复位过程是比较复杂的,如 <br>
果你有网卡驱动的UNIX,LINUX程序的源代码,它的代码将会做一些判断和检查,检 <br>
查网卡是否存在,和是否工作正常,和是否存在地址和中断冲突 。但在我们的这 <br>
个系统里可以省去这些,我们认为网卡的地址和I/O是没有冲突和正常工作的。当 <br>
然如果读者愿意,也可以写一些检查代码。 <br>
<br>
<br>
(未完) <br>
<br>
<br>
-- <br>
<br>
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.174.125] <br>
</small><hr>
<p align="center">[<a href="嵌入式系统.htm">回到开始</a>][<a href="398.htm">上一层</a>][<a href="428.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -