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

📄 niccheck.c

📁 本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.
💻 C
字号:
/*******************************************************************
以太网芯片检测函数               
函数原型:
CheckRTL8019();  
功能:
检查RTL8019的状态。
参数:
	无。
返回值:
	RTL8019的状态,如果状态错误则返回FALSE,否则返回TRUE。  
********************************************************************/
unsigned char CheckRTL8019(void)
{
	unsigned i,temp;
	outportb(BIOA+0x1f,inportb(BIOA+0x1f));	//启动RTL8019AS
	outportb(CR,0x21);						//设置page 0,复位RTL8019AS
	if(inportb(CR)!=0x21)
		return FALSE;						
	outportb(DCR,0x49);		   				//设置数据结构寄存器
	outportb(TCR,0x02);						//设置RTL8019AS发送模式
	outportb(RBCR0,0x0c);					//设置远程DMA字节计数器
	outportb(RBCR1,0);
	outportb(RSAR0,0);						//设置远程DMA开始地址
	outportb(RSAR1,0);
	outportb(CR,0x0a);						//设置远程DMA读
	for(i=0;i<6;i++)
		szNodeAddress[i]=inportb(DATAIO);
	outportb(RSAR0,0x1c);			//设置远程DMA起始地址
	outportb(RSAR1,0);
	outportb(RBCR0,0x02);			//设置远程DMA字节计数器
	outportb(RBCR1,0);
	outportb(CR,0x0a);				//设置远程DMA读
	Flag=inportb(DATAIO);
	outportb(RSAR0,0);				//设置远程DMA起始地址
	outportb(RSAR1,0x40);
	outportb(RBCR0,0);		   		//设置远程DMA字节计数器
	outportb(RBCR1,0x40);
	outportb(CR,0x12);				//设置远程DMA写
	for(i=0;i<0x2000;i++)
		outport(DATAIO,i);
	outportb(RSAR0,0);				//设置远程DMA起始地址
	outportb(RSAR1,0x40);
	outportb(RBCR0,0);				//设置远程DMA字节计数器
	outportb(RBCR1,0x40);
	outportb(CR,0x0a);				//设置远程DMA读
	for(i=0;i<0x2000;i++)
		if(inport(DATAIO)!=i)
			return FALSE;
	return TRUE;
}

/*******************************************************************
以太网芯片检测函数               
函数原型:
InitializeRTL8019();  
功能:
初始化RTL8019的状态。
参数:
	无。
返回值:
	无。  
********************************************************************/
void InitializeRTL8019(void)
{
	unsigned char i;
	outportb(BIOA+0x1f,inportb(BIOA+0x1f));	//启动以太网芯片
	outportb(CR,0x21);			//设置第0页,复位以太网芯片
	outportb(DCR,0x49);		   	//设置数据寄存器
	outportb(RBCR0,0);			//设置远程DMA字节计数
	outportb(RBCR1,0);
	outportb(RCR,0x0c);			//设置数据接收寄存器状态
	//仅仅接受广播数据和符合本地地址的数据
	outportb(TCR,0x02);			//设置发送寄存器
	outportb(BNRY,STARTADDRESS);			//设置边界指针
	outportb(PSTART,STARTADDRESS);			//设置页起始寄存器
	outportb(PSTOP,STOPADDRESS);			//Set page end register
	outportb(ISR,0xff);			//清除以太网芯片中断寄存器状态
	outportb(IMR,0x1b);			//设置中断屏蔽寄存器,使能接收中断
	outportb(CR,0x61);			//设置第1页
	for(i=1;i<=6;i++)
		outportb(BIOA+i,szNodeAddress[i-1]); //设置本地地址和地址寄存器
	outportb(CURR,STARTADDRESS+1);
	NextPacket=STARTADDRESS+1;
	outportb(CR,0x22);
	outportb(CR,0x62);
	for(i=0;i<8;i++)
		outportb(MAR0+i,0);
	outportb(CR,0x22);
	outportb(TCR,0);
}

⌨️ 快捷键说明

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