📄 车库发射.c
字号:
//ptr8000: DR=P3.2; W8000: DR=P1.0;
#include <reg52.h>
#define NRF905_BUFFER=0x20;
sfr AUXR=0x8e;
sfr SPCTL=0x85;
sfr SPSTAT=0x84;
sfr SPDAT=0x86;
sfr P1M0=0x91;
sfr P1M1=0x92;
sbit TX_EN=P1^2;
sbit TRX_CE=P1^3;
sbit PWR_UP=P1^1;
sbit DR=P1^0;
sbit ESPI=IE^5;
sbit SCLK=P1^7;
sbit MISO=P1^6;
sbit MOSI=P1^5;
sbit CSN=P1^4;
sbit MCU_WORK_LED=P3^4;
void initial_SPI()
{ P1M0=0x40;
P1M1=0xa0;
AUXR=0xf7;
SPCTL=0xd0;
SPSTAT=0xc0;
}
void spi_send_byte(byte_data)
{
SPDAT=byte_data;
while(!(SPSTAT&0x80));
SPSTAT=0xc0;
}
void initial_nrf905()
{
CSN=0;
spi_send_byte(0x00);
spi_send_byte(0x6E);//433.4MHz
spi_send_byte(0x0C);
spi_send_byte(0x44);
spi_send_byte(0x05);//发射有效数据长度5字节
spi_send_byte(0x05);//接收有效数据长度5字节
spi_send_byte(0xFE);
spi_send_byte(0xFE);
spi_send_byte(0xFE);
spi_send_byte(0xFE);
spi_send_byte(0xdb);
CSN=1;
}
void nrf905_tx_add(unsigned char address)
{ unsigned char i;
CSN=0;
spi_send_byte(0x22);
for(i=4;i>0;i--)
spi_send_byte(address);
CSN=1;
}
void nrf905_data_send()
{unsigned char i,buffer;
CSN=0;
spi_send_byte(0x20);
buffer=0x55;
for(i=5;i>0;i--)
spi_send_byte(buffer--);
CSN=1;
}
void delay()
{unsigned char i,j;
for(i=10;i>0;i--)
for(j=50;j>0;j--);
}
void main()
{ unsigned char i;
SP=0x7f;
TX_EN=1;
PWR_UP=1;
TRX_CE=0;
TX_EN=0;
delay();
initial_SPI();
initial_nrf905();
while(1)
{ for(i=250;i>0;i--)
{ nrf905_tx_add(i);
//MCU_WORK_LED=!MCU_WORK_LED;
nrf905_data_send();
TX_EN=1;
TRX_CE=1;
while(DR==0);
delay();
TX_EN=1;
TRX_CE=0;}
MCU_WORK_LED=!MCU_WORK_LED;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -