?? 00000025.htm
字號(hào):
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>單片機(jī)與TCP/IP網(wǎng)絡(luò) (七) jacobw </title></head><body><center><h1>BBS 水木清華站∶精華區(qū)</h1></center><a name="top"></a>發(fā)信人: turbolinux (hoho~神啊,救救我吧...), 信區(qū): Embedded <br />標(biāo) 題: 單片機(jī)與TCP/IP網(wǎng)絡(luò) (七) <br />發(fā)信站: BBS 水木清華站 (Fri Jul 13 00:35:16 2001) <br /> <br /> 單片機(jī)與TCP/IP網(wǎng)絡(luò) <br />--版主 老古 <a href="http://www.laogu.com">http://www.laogu.com</a> <br /> <br />(七)網(wǎng)卡上電復(fù)位 <br /> <br /> <br />------------------------------------------------------------------------ <br />-------- <br /> <br />----當(dāng)你買到一個(gè)新的RTL8019AS網(wǎng)卡,你要先將該網(wǎng)卡設(shè)置為以下的配置: <br /> <br />操作方式Operating Mode:跳線方式Jumperless(不是即插即用Plug and Play) <br /> <br />端口I/O base:0240-25FH <br />中斷Interrupt: 2/9(我的程序沒有用到網(wǎng)卡中斷,所以也可以不用設(shè)置) <br />你要將這個(gè)網(wǎng)卡插到你的電腦里,用這個(gè)網(wǎng)卡帶的設(shè)置程序RSET8019.exe將這個(gè)卡 <br />按照上面的配置設(shè)置好。(最好在純DOS方式下設(shè)置) . <br /> <br />--在介紹網(wǎng)卡驅(qū)動(dòng)程序之前,先介紹一下RTL8019AS的基本情況: <br /> <br />輸入輸出地址:共32個(gè),地址偏移量為00H--1FH,(對(duì)應(yīng)于240H--25FH,240H的地 <br />址偏移量為0,241H的地址偏移量為1,。。。25FH的地址偏移量為1FH)。 <br /> <br />其中00H--0FH共16個(gè)地址,為寄存器地址。 <br />10H--17H共8個(gè)地址,為DMA地址。 <br />18H--1FH共8個(gè)地址,為復(fù)位端口。 <br />對(duì)于8位的操作方式,上面的地址中只有18個(gè)是有用的: <br />00H--0FH共16個(gè)寄存器地址。 <br />10H DMA地址 (10H--17H的8個(gè)地址是一樣的,都可以用來做DMA端口,只要用其 <br />中的一個(gè)就可以了) <br />1FH 復(fù)位地址。(18H到1FH共8個(gè)地址都是復(fù)位地址,每個(gè)地址的功能都是一樣的 <br />,只要其中的一個(gè)就可以了) <br /> <br />寄存器:00H--0FH共16個(gè)地址是寄存器地址。寄存器分成4頁P(yáng)AGE0--PAGE3,但 <br />NE2000兼容的寄存器只有3頁(Page0-Page2),(第四頁是RTL8019AS自己定義的, <br />我們不用去管這些寄存器,因?yàn)槟銓?duì)第四頁的寄存器的操作僅對(duì)這個(gè)網(wǎng)卡是有效的 <br />,如果你換成其他Ne2000兼容的網(wǎng)卡,你的程序?qū)o法正常運(yùn)行。 為了保證驅(qū)動(dòng) <br />程序?qū)λ蠳e2000的網(wǎng)卡有效,不要去操作第四頁的寄存器) <br />由于寄存器較多,我將在用到該寄存器的時(shí)候才對(duì)該寄存器介紹。 <br /> <br />---對(duì)網(wǎng)卡進(jìn)行復(fù)位: <br />這是網(wǎng)卡驅(qū)動(dòng)程序的需要做的第一個(gè)內(nèi)容,由于我們將網(wǎng)卡設(shè)置為跳線模式,而不 <br />是即插即用的模式,RTL8019AS.PDF中介紹的PLUG and PLAY的一些過程,我們不需 <br />要做,因?yàn)閱纹瑱C(jī)的資源有限,能夠減少的操作,都盡量減少。 <br /> <br />程序從main()開始執(zhí)行: <br /> <br />#include <my.h> /*my.h 為作者所用的頭文件,包含所有89c52寄存器的大寫和小 <br />寫的定義, <br />和一些常用的子函數(shù),一些宏的定義*/ <br />main() <br /> <br />{ <br /> <br />delaymsecond(10);//延時(shí)大約1秒,保證電源穩(wěn)定和網(wǎng)卡自身的上電完成。 <br />netcardreset();//復(fù)位網(wǎng)卡的子程序 <br /> <br />。。。。 <br /> <br />} <br />下面介紹網(wǎng)卡的復(fù)位子程序: <br />#define reg1f XBYTE[0xdf00] //網(wǎng)卡的復(fù)位端口的地址,對(duì)應(yīng)于網(wǎng)卡的地址 <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; //單片機(jī)的p3.4腳連接到網(wǎng)卡的RSTDRV復(fù)位引腳 <br /> <br />void netcardreset() <br />{uint data i; <br />uchar data temp; <br />reset=1; //使網(wǎng)卡的RSTDRV引腳變成高電平,網(wǎng)卡是高電平復(fù)位的。 <br />for(i=0;i<250;i++);//延時(shí)程序 <br />reset=0; //使網(wǎng)卡的RSTDRV引腳變成低電平,網(wǎng)卡上電復(fù)位完畢 <br />for(i=0;i<250;i++); <br />temp=reg1f;//讀網(wǎng)卡的復(fù)位端口 <br />reg1f=temp; //寫網(wǎng)卡的復(fù)位端口 <br />for(i=0;i<250;i++); <br /> <br /> <br />} <br />上面所講的實(shí)際上是網(wǎng)卡復(fù)位的兩種情況, <br />reset=1;reset=0相當(dāng)于冷復(fù)位 <br />temp=reg1f;reg1f=temp相當(dāng)于熱復(fù)位 <br />對(duì)網(wǎng)卡的復(fù)位端口的讀寫將復(fù)位網(wǎng)卡,網(wǎng)卡內(nèi)部將執(zhí)行復(fù)位過程。讀寫是隨意的, <br />寫入任意的數(shù)都將復(fù)位網(wǎng)卡。 <br />實(shí)際上只要使用冷復(fù)位就可以了,熱復(fù)位程序可以不要。熱復(fù)位主要在電腦里有用 <br />,冷復(fù)位就像電腦的冷啟動(dòng),熱復(fù)位相當(dāng)于電腦的熱啟動(dòng)。 <br /> <br />--作者的復(fù)位網(wǎng)卡的過程是簡(jiǎn)化了的,一個(gè)電腦里的復(fù)位過程是比較復(fù)雜的,如 <br />果你有網(wǎng)卡驅(qū)動(dòng)的UNIX,LINUX程序的源代碼,它的代碼將會(huì)做一些判斷和檢查,檢 <br />查網(wǎng)卡是否存在,和是否工作正常,和是否存在地址和中斷沖突 。但在我們的這 <br />個(gè)系統(tǒng)里可以省去這些,我們認(rèn)為網(wǎng)卡的地址和I/O是沒有沖突和正常工作的。當(dāng) <br />然如果讀者愿意,也可以寫一些檢查代碼。 <br /> <br /> <br />(未完) <br /> <br /> <br />-- <br /> <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 166.111.174.125] <br /><a href="00000024.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一頁</a><a href="index.htm">回到目錄</a><a href="#top">回到頁首</a><a href="00000026.htm">下一篇</a></h1></center><center><h1>BBS 水木清華站∶精華區(qū)</h1></center></body></html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -