---- 完成复位之后,你要对网卡的工作参数进行设置.以使网卡开始工作.
先介绍一个子函数
#define reg00 XBYTE[0xc000] //对应于地址240H 为命令寄存器CR地址
void page(uchar pagenumber)
{ uchar data temp;
temp=reg00;//command register
temp=temp&0x3f;
pagenumber=pagenumber <<6;
temp=temp | pagenumber;
reg00=temp;
}
错误修正:(2001年11月10日) :以上程序有问题,在中断驱动或发送数据包不作等待时,因为发送数据包的命令是让TXP置位,如果在发送数据包的过程中,使用该函数,就会不断地向外发送数据包.原因是TXP置位之后,只能是发完数据包的时候,由网卡内部将TXP位清0,命令不能使TXP清0,对该位写入0没有作用.读取时要屏蔽该位,上面的程序修正如下,请用户使用下面的程序:
void page(uchar pagenumber)
{uchar data temp;
temp=reg00;
temp=temp&0x3B; //注意不是0x3F ,TXP位在平时一定要置为0.
pagenumber=pagenumber<<6
temp=temp|pagenumber;
reg00=temp;
}
从实验当中也发现,只要再置位TXP位就可以重发该数据包(重发数据包时,不需要设置TPSTART,TBCR0,TBCR1).
作用是选择指定的页,网卡共有4页寄存器,