资源简介
自己写的,已经测试了的,能够进行双向通信,实现双向控制,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个文件信息
相关资源
- 12位AD转换器TLC2543与51系列单片机接口
- 基于单片机的多路压力测量仪设计
- 基于单片机的多路数据采集系统的设
- protel99AT89C51库
- 基于AT89C51单片机的电子计价秤的设计
- C51源程序集锦C51源程序集锦
- pic汇编程序,主要是供初学者学习p
- 51单片机用433M无线模块控制程序
- 单片机数字钟实训报告(完整版)
- 基于AT89S52单片机的数字温度计
- 基于DSP单片机的多功能汽车防撞雷达
- dspic单片机电机控制
- USB调试助手(单片机多功能调试助手
- at89c51单片机开发板原理图
- 51单片机可显示频谱电子琴
- 大气压强传感器BMP280单片机程序
- 基于51单片机的modbus rtu 通信测试程序
- 51单片机交通灯汇编程序
- 电子大赛交流文章不用单片机的智能
- 基于AD9850的信号发生器的设计
- 基于单片机与光电传感器的电动自行
- MSP430小车控制
- 关于avr单片机红外遥控解码的程序
- 基于51单片机的简单计算器数码管显示
- 基于单片机的黑白棋课程设计
- 51单片机485(modbus协议)通信程序
- 基于AT89c51单片机的数字温度测量及显
- 51单片机播放音乐、电子琴、快进
- 51单片机1602+ADIIC+按键
- 基于超声波倒车雷达 文献综述
评论
共有 条评论