⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeram.c

📁 一种操作系统源码核
💻 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 + -