字节顺序为高位字节在前,低位字节在后 */
REG0f = 0x00; // 中断屏蔽寄存器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
}
责任编辑;zl
关于控制,MCU就介绍完了,您有什么想法可以联系小编。