📄 eeram.c
字号:
#include "Ne2000.h"
extern XCHAR Local_pMacAddress[HW_ALEN]
#define ERAMMACINDEX (UCHAR)0x02;
void WrEnable()
{
DCHAR I;
EECS=1;
EEDI=1; //OUT 1 START BIT
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=0; //OUT 0
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=0; //OUT 0 00 OP BITS
_NOP_();
EESK=1;
FOR (I=0;I++;I<6)
{
_NOP_();
EESK=0;
EEDI=1; //OUT 111111 ADDRESS BITS
_NOP_();
EESK=1;
}
_NOP_();
EESK=0;
EECS=0;
}
void WrAll()
{
DCHAR I;
EECS=1;
EEDI=1; //OUT 1 START BIT
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=0; //OUT 0
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=0; //OUT 0 00 OP BITS
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=0; //OUT 0 First ADDRESS BIT
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=1; //OUT 1 Second ADDRESS BIT
_NOP_();
EESK=1;
FOR (I=0;I++;I<20)
{
_NOP_();
EESK=0;
EEDI=0; //OUT 20'0 4 bits dont'care ADDRESS BITS and 16 data bits
_NOP_();
EESK=1;
}
_NOP_();
EESK=0;
EECS=0;
_nop_();
while (!EEDO) //EEDO==1 Exit
;
}
void WrMacAddress()
{
DCHAR i,j;
USHORT iMacWord[2];
USHORT bdata iTempword;
UCHAR bdata iAddress;
XCHAR[NE2000_BASE+NIC_COMMAND]=CR_PAGE3;
XCHAR[NE2000_BASE+NIC_9346CR]=9346_Program;
iMacWord[0]=P_MAKEWORD((UCHAR)Local_pMacAddress[0],(UCHAR)Local_pMacAddress[1]);
iMacWord[1]=P_MAKEWORD((UCHAR)Local_pMacAddress[2],(UCHAR)Local_pMacAddress[3]);
iMacWord[2]=P_MAKEWORD((UCHAR)Local_pMacAddress[4],(UCHAR)Local_pMacAddress[5]);
iAddress=ERAMMACINDEX;
for (j=0;j++;j<3)
{
iTempWord=iMacWord[j];
EECS=1;
EEDI=1; //OUT 1 START BIT
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=0; //OUT 0
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=1; //OUT 1 00 OP BITS
_NOP_();
EESK=1;
for (i=5;i--;i>=0)
{
_NOP_();
EESK=0;
EEDI=iAddress^i; //OUT 0 A5 ADDRESS BIT
_NOP_();
EESK=1;
}
for(i=15;i--;i>=0)
{
_NOP_();
EESK=0;
EEDI=iTempWord^i; //OUT 20'0 4 bits dont'care ADDRESS BITS and 16 data bits
_NOP_();
EESK=1;
}
_NOP_();
EESK=0;
EECS=0;
_nop_();
while (!EEDO) ; //EEDO==1 Exit
iAddress++
} //for i=0
XCHAR[NE2000_BASE+NIC_9346CR]=9346_Normal;
XCHAR[NE2000_BASE+NIC_COMMAND]=CR_PAGE0;
}
void WtDisable()
{
DCHAR I;
EECS=1;
EEDI=1; //OUT 1 START BIT
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=0; //OUT 0
_NOP_();
EESK=1;
_NOP_();
EESK=0;
EEDI=0; //OUT 0 00 OP BITS
_NOP_();
EESK=1;
FOR (I=0;I++;I<6)
{
_NOP_();
EESK=0;
EEDI=0; //OUT 000000 ADDRESS BITS
_NOP_();
EESK=1;
}
_NOP_();
EESK=0;
EECS=0;
}
void InitEram()
{
XCHAR[NE2000_BASE+NIC_COMMAND]=CR_PAGE3;
XCHAR[NE2000_BASE+NIC_9346CR]=9346_Program;
EECS=0;
EESK=0;
WrEnable();
WrAll();
WrMacAddress();
WtDisable();
XCHAR[NE2000_BASE+NIC_9346CR]=9346_Normal;
XCHAR[NE2000_BASE+NIC_COMMAND]=CR_PAGE0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -