单片机实现以太网接口-基于RTL8019
IMR,设置为屏蔽所有中断
SelectPage(1);//选择页1的寄存器
REG07=0x4d;//寄存器CURR,设置为指向当前正在写的页的下一页(用作写指针)
/*多址地址寄存器MAR0-MAR7均设置为0x00 */
REG08 = 0x00;// MAR0
REG09 = 0x00;// MAR1
REG0a = 0x00;// MAR2
REG0b = 0x80;// MAR3
REG0c = 0x00;// MAR4
REG0d = 0x00;// MAR5
REG0e = 0x00;// MAR6
REG0f = 0x00;// MAR7
GetPhyAdd();//获取以太网物理地址
REG00 = 0x22;//选择页0寄存器,执行命令。
}
/*上电后清除ISR寄存器*/
void ClearISR()
{
SelectPage(0);
REG07 = REG07|0xff;
}
/*获取以太网物理地址*/
void GetPhyAdd()
{
uchar tmp;
SelectPage(0);//选择页0
REG08 = 0;//远程DMA起始地址低位寄存器RSAR0,设置为0
REG09 = 0;//远程DMA起始地址高位寄存器RSAR1,设置为0
REG0a = 12;//远程DMA计数器低位寄存器RBCR0,设置为12
REG0b = 0;//远程DMA计数器高位寄存器RBCR1,设置为0
REG00 = 0x0a;//远程DMA,启动命令
SelectPage(1);//选择页1
tmp = REG10;//读取一个字节
REG01 = tmp;//写入PAR0
tmp = REG10;//读取一个重复的字节,这个字节被丢弃
tmp = REG10;//读取一个字节
REG02 = tmp;//写入PAR1
tmp = REG10;//读取一个重复的字节,这个字节被丢弃
tmp = REG10;//读取一个字节
REG03 = tmp;//写入PAR2
tmp = REG10;//读取一个重复的字节,这个字节被丢弃
tmp = REG10;//读取一个字节
REG04 = tmp;//写入PAR3
tmp = REG10;//读取一个重复的字节,这个字节被丢弃
tmp = REG10;//读取一个字节
REG05 = tmp;//写入PAR4
tmp = REG10;//读取一个重复的字节,这个字节被丢弃
tmp = REG10;//读取一个字节
REG06 = tmp;//写入PAR5
}
单片机以太网接口RTL801 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)