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

📄 fiber.c

📁 非常重要的嵌入式单片机开发语言 是美国德州仪器的MSP430系列的系统语言2
💻 C
字号:

#include <msp430x16x.h>
#include <signal.h>
#include "eMSP.h"
#include  "PCI.h"
                   //***** fixed delay to keep 128KHz *****
//void NETdelay() {int i;for(i=24;i;i--)_NOP();}
void NETdelay() {int i;for(i=30;i;i--)_NOP();}

//*********************************************************
// functions about read/write network data
//
// NETputWord()  : put 1-word to node#X
// NETgetWord()  : get 1-word to node#X
// NETputWords() : put N-word to node#X
// NETgetWords() : get N-word to node#X
//*********************************************************
void     NETputWord(int n,int a, unsigned d){NETputWords(n,a,&d,1);}
unsigned NETgetWord(int n,int a){unsigned d; NETgetWords(n,a,&d,1);return(d);}
                  //***** put n-word to fiber-network *****
void NETputWords(int node,int addr,unsigned *dat,int len)
{    unsigned char x; int i;
     csPGAon();
     for (i=0; i<len; i++,addr++,dat++)
     {    x=0x01+(node<<2)+((addr>>13)&0x02); SPItx(x); NETdelay();
          x=(addr>>7)&0x7f;                   SPItx(x); NETdelay();
          x= addr    &0x7f;                   SPItx(x); NETdelay();
          x=(*dat>>8)&0xff;                   SPItx(x); NETdelay();
          x= *dat    &0xff;                   SPItx(x); NETdelay();
     }
     csPGAoff();
}
                //***** get n-word from fiber-network *****
void NETgetWords(int node,int addr,unsigned *dat,int len)
{    unsigned char x,dh,dl; int i;
     csPGAon();
     for (i=0; i<=len; i++,addr++)
     {    if (i<len)
          {    x=0x81+(node<<2)+((addr>>13)&0x02); SPItx(x); NETdelay();
               x=(addr>>7)&0x7f;                   SPItx(x); NETdelay();
               x= addr    &0x7f;                   SPItx(x); NETdelay();
          } else                       //**null frame
          {    x=0xff; SPItx(x); NETdelay();
               x=0;    SPItx(x); NETdelay();
               x=0;    SPItx(x); NETdelay();
          }
          SPItx(0); NETdelay(); SPIrx(dh);
          SPItx(0); NETdelay(); SPIrx(dl);
          if (i>0) *dat++=(((unsigned)dh)<<8)+dl;
     }
     csPGAoff();
}
                //***** get n-word from fiber-network *****
void NETtestWords(unsigned char *dat,int len)
{    unsigned char x; int i; unsigned node,addr;
     csPGAon();
     for (i=0; i<=len; i+=5)
     {    node=0; addr=0x0010;
          if (i<len)
          {    x=0x81+(node<<2)+((addr>>13)&0x02); SPItx(x); NETdelay(); SPIrx(x); *dat++=x;
               x=(addr>>7)&0x7f;                   SPItx(x); NETdelay(); SPIrx(x); *dat++=x;
               x= addr    &0x7f;                   SPItx(x); NETdelay(); SPIrx(x); *dat++=x;
          } else                       //**null frame
          {    x=0xff; SPItx(x); NETdelay(); SPIrx(x); *dat++=x;
               x=0;    SPItx(x); NETdelay(); SPIrx(x); *dat++=x;
               x=0;    SPItx(x); NETdelay(); SPIrx(x); *dat++=x;
          }
          SPItx(0x00); NETdelay(); SPIrx(x); *dat++=x;
          SPItx(0x00); NETdelay(); SPIrx(x); *dat++=x;
     }
     csPGAoff();
}

⌨️ 快捷键说明

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