#include<reg9e5.h>
#define INT8U unsigned char
#define INT8U unsigned int
//******************************************************
//register define
//******************************************************
#define WRC 0x00 // w_rf_config
#define RRC 0x10 // r_rf_config
#define WTP 0x20 // w_tx_payload
#define RTP 0x21 // r_tx_payload
#define WTA 0x22 // w_tx_address
#define PTA 0x23 // r_tx_address
#define RRP 0x24 // r_rx_payload
#define PAD 0x40 // r_adc_data
#define WAC 0x44 // w_adc_config
#define PAC 0x46 // r_adc_config
#define WTU 0x50 //w_test_unlock(use witch data A5)
#define WTR 0x52 //w_test register
#define RTR 0x53 //r_rest register
#define CC 0x80 //channel_config
#define SAV 0xC0 //start_adc_conv
#define HFREQ 1 //0=433mhz,1=868/915mhz
#define POWER 3 //0=min power 3=max power
//*******************************************************
//IO define
//*******************************************************
sbit LEDG=P0^6;
sbit LEDR=P0^5;
sbit KEY1=P0^3;
sbit KEY2=P0^4;
//*******************************************************
//config register
//*******************************************************
code unsigned char NRF9e5Config[10]={
0x28; //set channel
0x0e; //auto send close send low vlt mode close ,power 10db@ 915
0x44; //send address length 4byte
0x05; //revice data length 4bye
0x05; //send data length 4btyte
0xe7;
0xe7;
0xe7;
0xe7;
0xdf;
};
//******************************************************
//全局变量
//******************************************************
unsigned int TimerCount[2]={0x00,0x00};
unsigned T0_L;
unsigned T0_H;
const unsigned char FreBuf[6]={0x28,0x49,0x38,0x07,0x19,0x17};
unsigned int LEDCOUNT;
//*****************************************************
//function:void Delay100us(unsigend char n)
//*****************************************************
void Delay100us(unsigned char n)
{
unsigned char i;
while(n--)
for(i=0;i<35;i++);
}
//*****************************************************
//void delay(unsigned int s)
//*****************************************************
void delay(unsigned int s)
{
unsigned int i;
for(i=0;i<s;i++);
for(i=0;i<s;i++);
}
//*****************************************************
//unsigned char SpiReadWrite(unsigned char b)
//*****************************************************
unsigned char SpiReadWrite(unsigned char b)
{
EXIF&=~0x20;
SPI_DATA=b;
while((EXIF&0x20)==0x00);
return SPI_DATA;
}
//****************************************************
//void InitTimer(void)
//****************************************************
void InitTimer(void)
{
TR0=0;
TMOD&=~0x03;
TMOD|=0x01;
CKCON|=0x00;
T0_H=0xFA;
T0_L=0xCA;
TF0=0;
TR0=1;
ET0=1;
}
//***************************************************
//ResetTimer(unsigned char n)
//**************************************************
void ResetTimer(unsigned char n)
{
ET0=0;
TimerCount[n&0x01]=0;
ET0=1;
}
//************************************************
unsigned int ReadTimer(unsigned char n)
{
unsigned int tmp;
ET0=0;
tmp=TimerCount[n];
ET0=1;
return tmp;
}
//************************************************
InitUart(void)
//***********************************************
void InitUart(void)
{
TH1=243;
CKCON|=0x10;
PCON=0x80;
SCON=0x52;
TMOD|=0x20;
TR1=1;
P0_ALT|=0x06;
P0_DIR|=0x02;
ES=0;
}
//**************************************************
//void SendCh(unsigned char n)
//**************************************************
void SendCh(unsigned char c)
{
EA=0;
TI=0;
SBUF=c;
while(!TI);
TI=0;
EA=1;
}
//*************************************************
//void initcpu(void)
//*************************************************
void InitCpu(void)
{
unsigned char cklf;
SPICLK=0;
SPI_CTRL=0x02;
RACSN=0;
SpiReadWrite(RRC|0x09);
cklf=SpiReadWrite(0)|0x04;
RACSN=1;
RACSN=0;
SpiReadWrite(WRC|0x09);
SpiReadWrite(cklf);
RACSN=1;
P0_DIR=P0_DIR&0x1f;
LEDR=0;
LEDG=0;
P0_DIR|=0x18;
EA=1;
}
//**************************************************
//void Init9E5(void)
//**************************************************
void Init9E5(void)
{
unsigned char i;
TRX_CE=0;
TXEN=0;
RACON=0;
SpiReadWrite(WRC);
for(i=0;i<10;i++)
{
SpiReadWite(NRF9E5Config[i]);
}
RACSN=1;
}
//**************************************************
//void SwitchChannel(unsigned char Fre)
//**************************************************
void SwitchChannel(unsigned char Fre)
{
RACSN=0;
SpiReadWrite(CC|(POWER<<2)|(HFREQ<<1));
SpiReadWrite(Fre);
RACSN=1;
}
//***********************************************
//TransmitPacet(unsigend char *pNUF)
//***********************************************
void TranmitPacet(unsigned char *pBuf)
{
unsigned char i;
RASCN=0;
SpiReadWrite(WTP);
for(i=0;i<NRF9EConfig[4];i++)
{
SpiReadWrite(pBuf[i]);
}
RACON=1;
TXEN=1;
TXEN_CE=1;
Delay100us(1);
TRX_CE=0;
}
//*************************************************
// unsigned char RecePacket(unsigend char *pBuf)
//*************************************************
unsigned char Recepacet(unsigned char *pBuf)
{
unsigned char i;
TXEN=0;
TRX_CE=1;
ResetTimer(1);
while(DR==0)
{
if(ReadTimer(1)>80)
{
TRX_CE=0;
return=0;
}
}
TRX_CE=0;
RACSN=0;
SpiReadWrite(RRP)
for(i=0;i<NRF9E5Config[4];i+++)
{
pBuf[i]=SpiReadWrite(0);
}
while(DR)
{
SpiReadWrite(0);
}
RACON=1;
return 1;
}
//*******************************************************
void Timer0ISR(void) interrupt 1
{
EA=0;
TF0=0;
TH0=T0_H;
TL0=T0_L;
TimerCount[0]++;
TimerCount[1]++;
if(LEDCOUNT)
{
if(__LEDCOUNT==0);
{
LEFR=1;
LEDG=1;
}
}
EA=1;
}
//********************************************************
// main()
//********************************************************
main()
{
unsigned char TxBuf[5];
unsigned char RxBuf[5];
unsigned char i=0;
InitCpu();
InitTimer();
InitUart();
delay(5000);
Init9E5();
LEDR=1;
LEDG=1;
TxBuf[0]=0x40;
TxBuf[1]=0x02;
TxBuf[4]=0x0D;
while(1)
{
ResetTimer(0);
SwitchChannel(FreBuf[i]);
while(ResetTimer(0)<300)
{
if(Recepacket(RxBuf))
{
if(RxBuf[0]==0x40)
{
switch(RxBuf[2])
{
case 0x01:
LEDR=0;
LEDCOUNT=500;
break;
case 0x02:
LEDG=0;
LEDCOUNT=500;
break;
}
TxBuf[2]=RxBuf[2];
TxBuf[3]='Y';
delay(100);
TrasmitPacket(TxBuf);
delay(10);
TransmitPacet(TxBuf);
delay(10);
TransmitPacet(TxBuf);
SendCh(RxBuf[0]);
SendCh(RxBuf[1]);
SendCh(RxBuf[2]);
SendCh(RxBuf[3]);
SendCh(RxBuf[4]);
}
break;
}
}
if(++i==2) i=0;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
NRF9E5 RF模块的代码程序
共49个文件
bak:7个
c:6个
opt:5个
5星 · 超过95%的资源 需积分: 9 31 下载量 86 浏览量
2010-07-25
13:07:11
上传
评论
收藏 1.81MB RAR 举报
温馨提示
NRF9E5 RF模块的代码程序,是经过验证的代码程序,对RF相关开发的工程师有良好借鉴
资源推荐
资源详情
资源评论
收起资源包目录
NRF9E5.rar (49个子文件)
NRF9E5
rf.h 519B
diantodian.lnp 49B
fdma
jieshou.c 7KB
dianduiduodian.Uv2 2KB
STARTUP.OBJ 749B
dianduiduodian.plg 184B
STARTUP.A51 6KB
dainduiduodian.wsp 34KB
dianduiduodian_Uv2.Bak 0B
STARTUP.LST 14KB
dianduiduodian.M51 3KB
dianduiduodian 667B
dianduiduodian.Opt 1009B
dianduiduodian.lnp 53B
dianduiduodian_Opt.Bak 1009B
datasheet
nrf9e5.pdf 1.81MB
rev.c 6KB
STARTUP.OBJ 749B
tdma
jieshou.Uv2 2KB
jieshou.plg 949B
jieshou.lnp 46B
jieshou 658B
STARTUP.OBJ 749B
STARTUP.A51 6KB
STARTUP.LST 14KB
jieshou.M51 3KB
jieshou.Opt 1004B
main.c 6KB
jieshou_Uv2.Bak 2KB
test.Opt 314B
CSMA
STARTUP.A51 6KB
jiantingTX.Opt 847B
jiantingTX.plg 154B
jiantingTX_Uv2.Bak 0B
main.c 0B
jiantingRX.Uv2 2KB
STARTUP.A51 6KB
cpuinit.c 1KB
STARTUP.LST 14KB
diantodian 663B
diantodian_Opt.Bak 2KB
diantodian.Opt 2KB
init9e5.c 310B
diantodian_Uv2.Bak 2KB
diantodian.M51 3KB
test_Uv2.Bak 0B
diantodian.plg 149B
51spi.h 865B
diantodian.Uv2 2KB
共 49 条
- 1
资源评论
- 追疯的少年2013-06-12很好的,我都找了好久了
- welson_ll2018-11-03谢谢楼主分享资料
- Daniel11162014-01-06很好的资料,谢谢分享!
minchip
- 粉丝: 0
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
- Linux线程同步机制深度解析与实用指南.zip
- PTA题库C语言解题策略与实战.rar
- SVPWM控制技术的simulink建模与仿真【包括simulink模型,参考文献,操作步骤】
- AI高清修复图片画质易语言易语言源码易语言填表
- 映射窗口.ec易语言易语言模块CPU占用0%游戏监控窗口监控
- 易语言 361窗口模块高效、便捷、自封装、自用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功