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

📄 nrf9e5的发射代码.txt

📁 针对无线收发芯片nRF9E5的扩展电路编写的部分程序
💻 TXT
字号:
9e5的发射代码
#include <Nordic\reg9e5.h>

sbit led = P0^7;        //指示灯
int sjjx0;            //计时

#define config_reg0  0x6c;//=0110_1100 CH_NO;
#define config_reg1  0x0e;//=0000_1110 D7D6-无效,D5-自动重发,D4-接收节能
                          //            D3D2-功率选择,D1-PLL控制,D0-CH_NO第8位
#define config_reg2  0x44;//=0100_0100; D7-无效,D6D5D4-接收地址长度,D3-无效,D2D1D0-发送地址长度
#define config_reg3  0x20;//=0010_0000; D7D6-无效,D5~D0接收数据宽度 32字节
#define config_reg4  0x20;//=0010_0000; D7D6-无效,D5~D0发送数据宽度 32字节
#define config_reg5  0xe7;//接收地址标识1
#define config_reg6  0xe7;//接收地址标识2
#define config_reg7  0xe7;//接收地址标识3
#define config_reg8  0xe7;//接收地址标识4
#define config_reg9  0xdc;//1101_1100;D7-CRC选择,D6-CRC校验使能,D5D4D3-晶振选择
                          //D2-输出时钟使能,D1D0-输出时钟频率

unsigned char config_reg[10]={0x6c,0x0e,0x44,0x20,0x20,0xe7,0xe7,0xe7,0xe7,0xdc};//配置字节
unsigned char txadd_sbuf[4]={0xe7,0xe7,0xe7,0xe7};//地址
unsigned char txdat_sbuf[32];//发送缓存

//------SPI读写-------
unsigned char SpiReadWrite(unsigned char b)
{
    EXIF &= ~0x20;                  // Clear SPI interrupt
    SPI_DATA = b;                   // Move byte to send to SPI data register
    while((EXIF & 0x20) == 0x00);   // Wait until SPI hs finished transmitting
    return SPI_DATA;
}

//---向SPI写地址----
void TransmitAddress(void)
{    unsigned char i;
    RACSN = 0;
    SpiReadWrite(WTA);                //指令
    for(i=0;i<4;i++)
    { SpiReadWrite(txadd_sbuf[i]);} //地址
    RACSN = 1;
}

//---向SPI写数据----
void TransmitPacket(void)
{    unsigned char i;
    RACSN = 0;
    SpiReadWrite(WTP);                //&acute;指令&icirc;
    for(i=0;i<31;i++)
    {    SpiReadWrite(txdat_sbuf[i]);}//数据
    RACSN = 1;
}
//-----9E5初始化------
void Init(void)
{     unsigned char i;
    P0_ALT = 0x00;                  // P0为I/O
    P0_DIR = 0x7f;            // P0.7
    SPICLK = 0x00;                      // SPI clock
    SPI_CTRL = 0x02;                    // Connect internal SPI controller to Radio
    // 设置Radio的RF-config: 
    TRX_CE = 0;              //待机
    TXEN = 1;                   //发送状态
    for(i=0;i<10;i++)
    {    RACSN = 1;
        RACSN = 1;
        RACSN = 0;
        RACSN = 0;
        RACSN = 0;
        RACSN = 0;
        SpiReadWrite(WRC | i);
        SpiReadWrite(config_reg[i]);
    }
    RACSN = 1;
    
    TMOD=0x21;
        TH0=0xe5;      //
        TL0=0xf5;
        ET0=1;
        EA=1;
        TR0=1;
}

void main(void)
{   unsigned char n,adc_num;
    Init();                //
    for(n=1;n<4;n++)        //指示灯闪烁
    {
        led = 0;
        sjjx0=40;
        while(sjjx0);
        led=1;
        sjjx0=40;
        while(sjjx0);
    }
       for(n=0;n<14;n++)txdat_sbuf[n]=0xaa;
    txdat_sbuf[14]=0x55;        //设置数据格式0xaa,0xaa....0xaa,0x55,[D1,D2,D3],0x33,0x33....0x33
    for(n=0;n<17;n++)txdat_sbuf[15+n]=0x33;
    while(1)
    {    adc_num++;    
          if(adc_num > 250)adc_num = 0;//设置传输数据0--250
          for(n=1;n<4;n++)txdat_sbuf[14+n]=adc_num;
        TransmitPacket();        //
            TRX_CE = 1;                //
        while(DR);
        while(!DR);
        TRX_CE = 0;                //发送完毕
        led = 0;
           sjjx0 = 40;
        while(sjjx0);
        led = 1;
           sjjx0 = 200;
        while(sjjx0);
    }
}
//----定时5ms-----
void timer0() interrupt 1         
{      TH0=0xe5;
      TL0=0xf5;
      sjjx0--;
}

⌨️ 快捷键说明

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