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

📄 cs8900.i

📁 msp430 cs8900a msp430 servermsp430 servermsp430 servermsp430 servermsp430 server
💻 I
📖 第 1 页 / 共 2 页
字号:




 






 

__no_init volatile unsigned char DCOCTL @ (0x0056);
__no_init volatile unsigned char BCSCTL1 @ (0x0057);
__no_init volatile unsigned char BCSCTL2 @ (0x0058);










 

__no_init volatile unsigned short FCTL1 @ (0x0128);
__no_init volatile unsigned short FCTL2 @ (0x012A);
__no_init volatile unsigned short FCTL3 @ (0x012C);








 

__no_init volatile unsigned char CACTL1 @ (0x0059);
__no_init volatile unsigned char CACTL2 @ (0x005A);
__no_init volatile unsigned char CAPD @ (0x005B);







 

__no_init volatile unsigned short ADC12CTL0 @ (0x01A0);
__no_init volatile unsigned short ADC12CTL1 @ (0x01A2);
__no_init volatile unsigned short ADC12IFG @ (0x01A4);
__no_init volatile unsigned short ADC12IE @ (0x01A6);
__no_init volatile unsigned short ADC12IV @ (0x01A8);

__no_init volatile unsigned short ADC12MEM0 @ (0x0140);
__no_init volatile unsigned short ADC12MEM1 @ (0x0142);
__no_init volatile unsigned short ADC12MEM2 @ (0x0144);
__no_init volatile unsigned short ADC12MEM3 @ (0x0146);
__no_init volatile unsigned short ADC12MEM4 @ (0x0148);
__no_init volatile unsigned short ADC12MEM5 @ (0x014A);
__no_init volatile unsigned short ADC12MEM6 @ (0x014C);
__no_init volatile unsigned short ADC12MEM7 @ (0x014E);
__no_init volatile unsigned short ADC12MEM8 @ (0x0150);
__no_init volatile unsigned short ADC12MEM9 @ (0x0152);
__no_init volatile unsigned short ADC12MEM10 @ (0x0154);
__no_init volatile unsigned short ADC12MEM11 @ (0x0156);
__no_init volatile unsigned short ADC12MEM12 @ (0x0158);
__no_init volatile unsigned short ADC12MEM13 @ (0x015A);
__no_init volatile unsigned short ADC12MEM14 @ (0x015C);
__no_init volatile unsigned short ADC12MEM15 @ (0x015E);

__no_init volatile unsigned char ADC12MCTL0 @ (0x0080);
__no_init volatile unsigned char ADC12MCTL1 @ (0x0081);
__no_init volatile unsigned char ADC12MCTL2 @ (0x0082);
__no_init volatile unsigned char ADC12MCTL3 @ (0x0083);
__no_init volatile unsigned char ADC12MCTL4 @ (0x0084);
__no_init volatile unsigned char ADC12MCTL5 @ (0x0085);
__no_init volatile unsigned char ADC12MCTL6 @ (0x0086);
__no_init volatile unsigned char ADC12MCTL7 @ (0x0087);
__no_init volatile unsigned char ADC12MCTL8 @ (0x0088);
__no_init volatile unsigned char ADC12MCTL9 @ (0x0089);
__no_init volatile unsigned char ADC12MCTL10 @ (0x008A);
__no_init volatile unsigned char ADC12MCTL11 @ (0x008B);
__no_init volatile unsigned char ADC12MCTL12 @ (0x008C);
__no_init volatile unsigned char ADC12MCTL13 @ (0x008D);
__no_init volatile unsigned char ADC12MCTL14 @ (0x008E);
__no_init volatile unsigned char ADC12MCTL15 @ (0x008F);

 



 


 





 





 
#pragma language=default



extern void DelayCycles(unsigned int Count);
extern void WriteDWBE(unsigned char *Add, unsigned long Data);


















                                                 
                                                 



























































typedef struct                                   
{
  unsigned int Addr;                             
  unsigned int Data;
} TInitSeq;


extern const unsigned int MyMAC[];               


void Init8900(void);
void Write8900(unsigned char Address, unsigned int Data);
void WriteFrame8900(unsigned int Data);
unsigned int Read8900(unsigned char Address);
unsigned int ReadFrame8900(void);
unsigned int ReadHB1ST8900(unsigned char Address);
unsigned int ReadFrameBE8900(void);
void CopyToFrame8900(void *Source, unsigned int Size);
void CopyFromFrame8900(void *Dest, unsigned int Size);
void DummyReadFrame8900(unsigned int Size);
void RequestSend(unsigned int FrameSize);
unsigned int Rdy4Tx(void);




const unsigned int MyMAC[] =                     
{

  0 + (unsigned int)(1 << 8),
  2 + (unsigned int)(3 << 8),
  4 + (unsigned int)(5 << 8)
};

static const TInitSeq InitSeq[] =
{
  (0x0158), 0 + (1 << 8),               
  (0x0158) + 2, 2 + (3 << 8),
  (0x0158) + 4, 4 + (5 << 8),
  (0x0112), (0x0040) | (0x0080),       
  (0x0104), (0x0100) | (0x0400) | (0x0800)
};




void Init8900(void)
{
  unsigned int i;

  P3OUT = (0x40) | (0x80);                             
  P3DIR = 0xff;                                  

  P5OUT = 0;                                     
  P5DIR = 0xff;                                  

  DelayCycles(40000);                            
  DelayCycles(40000);                            

  Write8900((0x000a), (0x0114));               
  Write8900((0x000c), (0x0040));          

  do
    Write8900((0x000a), (0x0136));              
  while (!(Read8900((0x000c)) & (0x0080)));    
  
  for (i = 0; i < sizeof InitSeq / sizeof (TInitSeq); i++) 
  {
    Write8900((0x000a), InitSeq[i].Addr);
    Write8900((0x000c), InitSeq[i].Data);
  }
}




void Write8900(unsigned char Address, unsigned int Data)
{
  P5DIR = 0xff;                                  
  P3OUT = (0x40) | (0x80) | Address;                   
  P5OUT = Data;                                  
  P3OUT &= ~(0x80);                                 
  P3OUT = (0x40) | (0x80) | (Address + 1);             
  P5OUT = Data >> 8;                             
  P3OUT &= ~(0x80);                                 
  P3OUT |= (0x80);
}



void WriteFrame8900(unsigned int Data)
{
  P5DIR = 0xff;                                  
  P3OUT = (0x40) | (0x80) | (0x0000);             
  P5OUT = Data;                                  
  P3OUT &= ~(0x80);                                 
  P3OUT = (0x40) | (0x80) | ((0x0000) + 1);       
  P5OUT = Data >> 8;                             
  P3OUT &= ~(0x80);                                 
  P3OUT |= (0x80);
}




void CopyToFrame8900(void *Source, unsigned int Size)
{
  unsigned int *pSource = Source;
  
  P5DIR = 0xff;                                  

  while (Size > 1)
  {
    P3OUT = (0x40) | (0x80) | (0x0000);           
    P5OUT = *pSource;                            
    P3OUT &= ~(0x80);                               
    P3OUT = (0x40) | (0x80) | ((0x0000) + 1);     
    P5OUT = (*pSource++) >> 8;                   
    P3OUT &= ~(0x80);                               
    P3OUT |= (0x80);
    Size -= 2;
  }
  
  if (Size)                                      
  {
    P3OUT = (0x40) | (0x80) | (0x0000);           
    P5OUT = *pSource;                            
    P3OUT &= ~(0x80);                               
    P3OUT |= (0x80);
  }
}




unsigned int Read8900(unsigned char Address)
{
  unsigned int ReturnValue;

  P5DIR = 0x00;                                  
  P3OUT = (0x40) | (0x80) | Address;                   
  P3OUT &= ~(0x40);                                 
  ReturnValue = P5IN;                            
  P3OUT = (0x40) | (0x80) | (Address + 1);             
  P3OUT &= ~(0x40);                                 
  ReturnValue |= P5IN << 8;                      
  P3OUT |= (0x40);
  P5DIR = 0xff;                                  
  
  return ReturnValue;
}



unsigned int ReadFrame8900(void)
{
  unsigned int ReturnValue;

  P5DIR = 0x00;                                  
  P3OUT = (0x40) | (0x80) | (0x0000);             
  P3OUT &= ~(0x40);                                 
  ReturnValue = P5IN;                            
  P3OUT = (0x40) | (0x80) | ((0x0000) + 1);       
  P3OUT &= ~(0x40);                                 
  ReturnValue |= P5IN << 8;                      
  P3OUT |= (0x40);
  P5DIR = 0xff;                                  
  
  return ReturnValue;
}





unsigned int ReadFrameBE8900(void)
{
  unsigned int ReturnValue;

  P5DIR = 0x00;                                  
  P3OUT = (0x40) | (0x80) | (0x0000);             
  P3OUT &= ~(0x40);                                 
  ReturnValue = P5IN << 8;                       
  P3OUT = (0x40) | (0x80) | ((0x0000) + 1);       
  P3OUT &= ~(0x40);                                 
  ReturnValue |= P5IN;                           
  P3OUT |= (0x40);
  P5DIR = 0xff;                                  
  
  return ReturnValue;
}






unsigned int ReadHB1ST8900(unsigned char Address)
{
  unsigned int ReturnValue;

  P5DIR = 0x00;                                  
  P3OUT = (0x40) | (0x80) | (Address + 1);             
  P3OUT &= ~(0x40);                                 
  ReturnValue = P5IN << 8;                       
  P3OUT = (0x40) | (0x80) | Address;                   
  P3OUT &= ~(0x40);                                 
  ReturnValue |= P5IN;                           
  P3OUT |= (0x40);
  P5DIR = 0xff;                                  
  
  return ReturnValue;
}




void CopyFromFrame8900(void *Dest, unsigned int Size)
{
  unsigned int *pDest = Dest;

  P5DIR = 0x00;                                  

  while (Size > 1)
  {
    P3OUT = (0x40) | (0x80) | (0x0000);           
    P3OUT &= ~(0x40);                               
    *pDest = P5IN;                               
    P3OUT = (0x40) | (0x80) | ((0x0000) + 1);     
    P3OUT &= ~(0x40);                               
    *pDest++ |= P5IN << 8;                       
    P3OUT |= (0x40);
    Size -= 2;
  }
  
  if (Size)                                      
  {
    P3OUT = (0x40) | (0x80) | (0x0000);           
    P3OUT &= ~(0x40);                               
    *(unsigned char *)pDest = P5IN;              
    P3OUT |= (0x40);                                
  }

  P5DIR = 0xff;                                  
}



void DummyReadFrame8900(unsigned int Size)
{
  P5DIR = 0x00;                                  

  while (Size--)
  {
    P3OUT = (0x40) | (0x80) | (0x0000);           
    P3OUT &= ~(0x40);                               
  }
  
  P3OUT |= (0x40);                                  
  P5DIR = 0xff;                                  
}




void RequestSend(unsigned int FrameSize)
{
  Write8900((0x0004), (0x00C0));
  Write8900((0x0006), FrameSize);
}




unsigned int Rdy4Tx(void)
{
  Write8900((0x000a), (0x0138));
  return Read8900((0x000c)) & (0x0100);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -