资源简介
自己写的,已经测试了的,能够进行双向通信,实现双向控制,nrf24l01是2.4G无线发送接收模块,传输数据速率可达2M。。。。

代码片段和文件信息
#include
#include
typedef unsigned char uchar;
typedef unsigned int uint;
sbit MISO =P2^0;
sbit MOSI =P2^1;
sbit SCK =P2^2;
sbit CE =P2^3;
sbit CSN =P2^4;
//sbit IRQ =P2^5;
#define TX_ADR_WIDTH 5
#define RX_ADR_WIDTH 5
#define TX_PLOAD_WIDTH 16
#define RX_PLOAD_WIDTH 16
#define READ_REG 0x00 // 读寄存器指令
#define WRITE_REG 0x20 // 写寄存器指令
#define RD_RX_PLOAD 0x61 // 读取接收数据指令
#define WR_TX_PLOAD 0xA0 // 写待发数据指令
#define FLUSH_TX 0xE1 // 冲洗发送 FIFO指令
#define FLUSH_RX 0xE2 // 冲洗接收 FIFO指令
#define REUSE_TX_PL 0xE3 // 定义重复装载数据指令
#define NOP 0xFF // 保留
#define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式
#define EN_AA 0x01 // 自动应答功能设置
#define EN_RXADDR 0x02 // 可用信道设置
#define SETUP_AW 0x03 // 收发地址宽度设置
#define SETUP_RETR 0x04 // 自动重发功能设置
#define RF_CH 0x05 // 工作频率设置
#define RF_SETUP 0x06 // 发射速率、功耗功能设置
#define STATUS 0x07 // 状态寄存器
#define OBSERVE_TX 0x08 // 发送监测功能
#define CD 0x09 // 地址检测
#define RX_ADDR_P0 0x0A // 频道0接收数据地址
#define RX_ADDR_P1 0x0B // 频道1接收数据地址
#define RX_ADDR_P2 0x0C // 频道2接收数据地址
#define RX_ADDR_P3 0x0D // 频道3接收数据地址
#define RX_ADDR_P4 0x0E // 频道4接收数据地址
#define RX_ADDR_P5 0x0F // 频道5接收数据地址
#define TX_ADDR 0x10 // 发送地址寄存器
#define RX_PW_P0 0x11 // 接收频道0接收数据长度
#define RX_PW_P1 0x12 // 接收频道0接收数据长度
#define RX_PW_P2 0x13 // 接收频道0接收数据长度
#define RX_PW_P3 0x14 // 接收频道0接收数据长度
#define RX_PW_P4 0x15 // 接收频道0接收数据长度
#define RX_PW_P5 0x16 // 接收频道0接收数据长度
#define FIFO_STATUS 0x17 // FIFO栈入栈出状态寄存器设置
unsigned char const TX_ADDRESS[TX_ADR_WIDTH]= {0x340x430x100x100x01};
unsigned char const RX_ADDRESS[RX_ADR_WIDTH]= {0x340x430x100x100x01};
//unsigned char const TX1_ADDRESS[TX_ADR_WIDTH]= {0x340x430x100x100x01};
//unsigned char const RX1_ADDRESS[RX_ADR_WIDTH]= {0x340x430x100x100x01};
uchar bdata sta; //状态标志
sbit RX_DR =sta^6;
sbit TX_DS =sta^5;
sbit MAX_RT =sta^4;
uchar send=0;
uchar receive=0;
//串口初始化
void init_s( void )
{ //波特率9600
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
PCON = 0x00;
TR1 = 1;
ES = 1;
EA = 1;
}
//通过串口将接收到数据发送给PC端
void to_pc(uchar r_datauchar flag)
{
SBUF = r_data;
while( flag == 0 );
flag = 0;
}
//长延时
/*
void delay_l(uint s)
{
uint i;
for(i=0; i for(i=0; i}
*/
//短延时
void delay_s(uchar n)
{
for(;n>0;n--)
_nop_();
}
//读写数据
uchar spi_rw(uchar u_char)
{
uchar bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++)
{
MOSI = (u_char & 0x80);//先输出高位
u_char = (u_char << 1);
SCK = 1;
u_char |= MISO;
SCK = 0;
}
return(u_char)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7310 2011-04-07 11:07 双向通信\主机\2401.c
文件 750 2011-04-07 10:57 双向通信\主机\2401.h
文件 14383 2011-04-07 21:03 双向通信\主机\2401.LST
文件 14752 2011-04-07 21:03 双向通信\主机\2401.OBJ
文件 1750 2011-04-07 20:54 双向通信\主机\lcd.c
文件 517 2011-04-07 20:57 双向通信\主机\lcd.h
文件 5001 2011-04-07 21:03 双向通信\主机\lcd.LST
文件 7131 2011-04-07 21:03 双向通信\主机\lcd.OBJ
文件 25562 2011-04-07 21:03 双向通信\主机\master
文件 1044 2011-04-07 21:03 双向通信\主机\master.c
文件 4138 2011-04-07 21:03 双向通信\主机\master.hex
文件 85 2011-04-07 21:03 双向通信\主机\master.lnp
文件 3800 2011-04-07 21:03 双向通信\主机\master.LST
文件 29351 2011-04-07 21:03 双向通信\主机\master.M51
文件 7216 2011-04-07 21:03 双向通信\主机\master.OBJ
文件 1741 2011-04-07 21:50 双向通信\主机\master.Opt
文件 18472 2011-04-07 21:50 双向通信\主机\master.plg
文件 2228 2011-04-06 22:23 双向通信\主机\master.Uv2
文件 1432 2011-04-07 20:26 双向通信\主机\master_Opt.Bak
文件 2228 2011-04-06 22:14 双向通信\主机\master_Uv2.Bak
文件 6376 2011-04-07 21:03 双向通信\主机\STARTUP.A51
文件 10767 2011-04-07 21:03 双向通信\主机\STARTUP.LST
文件 750 2011-04-07 21:03 双向通信\主机\STARTUP.OBJ
文件 7636 2011-04-07 11:04 双向通信\从机\2401.c
文件 743 2011-04-07 11:04 双向通信\从机\2401.h
文件 15061 2011-04-07 21:22 双向通信\从机\2401.LST
文件 13681 2011-04-07 21:22 双向通信\从机\2401.OBJ
文件 1958 2011-04-07 21:21 双向通信\从机\lcd.c
文件 571 2011-04-07 21:11 双向通信\从机\lcd.h
文件 5482 2011-04-07 21:22 双向通信\从机\lcd.LST
............此处省略22个文件信息
相关资源
- 51 单片机 红外避障小车 大集合136
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- proteus仿真 AT89C51输出各种波形
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- NRF24L01实现51与STM32双向通讯
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 浙江工业大学2005-2006学年单片机习题
评论
共有 条评论