字节顺序为高位字节在前,低位字节在后 */

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就介绍完了,您有什么想法可以联系小编。