|   单片机与TCP/IP网络--版主 老古 http://www.laogu.com
 (十四)以太网组播地址过滤寄存器的计算 
 终于找到关于RTL8019AS里的 MAR0-MAR7的计算的程序,源程序是80x86的汇编,我把它转换成了在keil 
            c51里的程序,以便可以在51单片机里使用。  跟组播地址有关的寄存器:
 
   为8个寄存器,提供对组播地址的过滤。跟crc的逻辑有关。MAR0-7 全部设置为0xff时,将接收所有的组播数据包,将MAR0-7 
            全部设置为0x00时,将不接收所有组播地址的数据包。在windows98里,该值被设置为:
 MAR0=0x00; MAR1=0x41;
 MAR2=0x00;
 MAR3=0x80;
 MAR4=0x00;
 MAR5=0x00;
 MAR6=0x00;
 MAR7=0x00;
 用户在嵌入式的应用当中,可以设置为全部0xff,也可以对特定的组播地址(比如你用在网络电台广播)进行计算,生成一个你需要的过滤参数。建议该过滤的算法不写在单片机里,最好是先算好,存储在单片机里,用的时候直接调用,以节省单片机的程序空间。   这8个寄存器的值是根据组播地址数组的值生成的,提供对组播地址的过滤,过滤掉一些不属于自己接收组播数据包。
 以下是在80x86 里的汇编程序: 点击这里打开。   以下是在keil c51里的c语言程序,为斑竹所写 点击这里打开。 |