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

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

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查