NRF24L01无线模块发送-AVR程序代码
扫描二维码
随时随地手机看文章
#include
#include
#include"lcd12864.h"
#defineuintunsignedint
#defineucharunsignedchar
#defineMISOPINB.6
#defineSCKPORTB.7
#defineMOSIPORTB.5
#defineCSNPORTC.0
#defineCEPORTC.1
#defineIRQPORTC.2
#defineCONFIG0x00//配置收发状态,CRC校验模式以及收发状态响应方式
#defineEN_AA0x01//自动应答使能
#defineEN_RXADDR0x02//接收地址允许
#defineSETUP_AW0x03//设置地址宽度
#defineSETUP_RETR0x04//建立自动重发
#defineRF_CH0x05//射频通道
#defineRF_SETUP0x06//射频寄存器
#defineSTATUS0x07//状态寄存器
#defineOBSTERVE_TX0x08//发送检测寄存器
#defineCD0x09//载波检测
#defineRX_ADDR_P00x0a//数据通道0接收地址
#defineRX_ADDR_P10x0b//数据通道0接收地址
#defineRX_ADDR_P20x0c//数据通道0接收地址
#defineRX_ADDR_P30x0d//数据通道0接收地址
#defineRX_ADDR_P40x0e//数据通道0接收地址
#defineRX_ADDR_P50x0f//数据通道0接收地址
#defineTX_ADDR0x10//发送地址
#defineRX_PW_P00x11//
#defineRX_PW_P10x12//
#defineRX_PW_P20x13//
#defineRX_PW_P30x14//
#defineRX_PW_P40x15//
#defineRX_PW_P50x16//
#defineFIFO_STATUS0x17//FIFO状态寄存器
#defineREAD_REG0x00//读寄存器指令
#defineWRITE_REG0x20//写寄存器指令
#defineRD_RX_PLOAD0x61//读取接收数据指令
#defineWR_TX_PLOAD0xA0//写待发数据指令
#defineFLUSH_TX0xE1//冲洗发送FIFO指令
#defineFLUSH_RX0xE2//冲洗接收FIFO指令
#defineREUSE_TX_PL0xE3//定义重复装载数据指令
#defineNOP0xFF//保留
#defineTX_ADR_WIDTH5//5uintsTXaddresswidth
#defineRX_ADR_WIDTH5//5uintsRXaddresswidth
#defineTX_PLOAD_WIDTH20//20uintsTXpayload
#defineRX_PLOAD_WIDTH20//20uintsTXpayload
ucharstatus;
ucharstr[30];
ucharTX_ADDRESS[TX_ADR_WIDTH]={0x05,0x04,0x03,0x02,0x01};//本地地址
ucharRX_ADDRESS[RX_ADR_WIDTH]={0x05,0x04,0x03,0x02,0x01};//接收地址
ucharTxBuf[17]="anywhereyouare";
ucharSPI_RW(ucharuuchar)//SPI写时序
{
ucharbit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++)
{
MOSI=(uuchar&0x80);
uuchar=(uuchar<<1);
SCK=1;
uuchar|=MISO;
SCK=0;
}
return(uuchar);
}
ucharSPI_Read(ucharreg)//SPI读取一个字节
{
ucharreg_val;
CSN=0;
SPI_RW(reg);
delay_ms(1);
reg_val=SPI_RW(0);
delay_ms(1);
CSN=1;
return(reg_val);
}
ucharSPI_RW_Reg(ucharreg,ucharvalue)//写一个自接到寄存器函数
{
ucharstatus;
CSN=0;
status=SPI_RW(reg);
delay_ms(1);
SPI_RW(value);
delay_ms(1);
CSN=1;
return(status);
}
uchar*ucharostr(ucharnum)
{
ucharx00,xx,x0,x,n;
x00=num/100;
xx=num0;
x0=xx/10;
x=xx;
n=0;
if(x00!=0)
{
str[n]=x00+48;
n++;
}
if(!(x00==0&x0==0))
{
str[n]=x0+48;
n++;
}
str[n]=x+48;
n++;
str[n]='