最大时间参考-APP_TIMER_MIN_TIMEOUT_TICKS~MAX_RTC_COUNTER_VAL
2.4GHz无线收发芯片nRF24E1的原理及应用By:个人收集
1 nRF24E1的主要特点
nRF24E1是北欧集成电路公司(NORDIC)推出的一款带2.4GHz无线收发器nRF2401和增强型8051内核的无线收发模块。nRF24E1适用于各种无线设备的短距离互连应用场合,工作于ISM(工业、科学和医学)频段。该器件有125个频点,能够实现点对点、点对多点的无线通信,同时可采用改频和跳频来避免干扰。nRF24E1最大传输速率可达1Mbit/s,其最大发射功率为0dBm,在比较理想环境中,其室内传输距离可达30~40米,室外传输距离可达100~200米。nRF24E1的灵敏度为-90dBm,工作电压为1.9V~3.3V,工作温度范围为-40~+80℃。
nRF24E1的主要特性如下:
带有2.4GHz无线收发器;
内含增强型8051控制器;
可工作在低电压��1.9V~3.6V��下;
内有电压调节器;
待机电流可低至2μA,同时器件还带有唤醒定时器;
采用0.18μm的CMOS技术制造;
所需外围器件很少;
设计简单。
2 引脚功能
nRF24E1采用36脚QFN(6×6mm)封装,其引脚排列如图1所示,各引脚功能如下:
nRF24E1有11个数字I/O引脚,由P0口(DIO2~DIO9)和P1口(DIO0、DIO1、DIN0)组成,除了DIN0只能用于输入外,其余都是双向引脚,而且大部分数字I/O有复用功能。P0口各个引脚的复用功能如表1所列。
P0口引脚的复用功能:
引 脚 P0.7(DIO9) P0.6 P0.5 P0.4
复用功能 PWM T1 T0 INT1
引 脚 P0.3 P0.2 P0.1 P0.0(DIO2)
复用功能 INT0 TXD RXD GPIO
此外,P0口还有两个控制寄存器P0 ALT和P0 DIR。其中P0 ALT的控制优先级高于P0 DIR。设计时可以通过设定P0 ALT来决定哪些引脚使用复用功能,没有选用复用功能的引脚则为GPIO,而可用P0 DIR来设置这些P0口是输入还是输出。
P1口只有3个引脚,可设为SPI接口或GPIO,nRF24E1使用SPI时,只能作为主机。SPI接口的引脚功能如下:
P1.2(DIN0):串行数据输入脚;
P1.1(DIN1):串行数据输出脚;
; P1.0(DIO0):串行时钟引脚。
nRF24E1带有9个模拟输入引脚,其中AIN0~AIN7为ADC的8路模拟输入,AREF为ADC参考电压。此外,该器件还有2个天线接口引脚ANT1和ANT2以及两个晶振引脚XC1和XC2。
nRF24E1必须用高精度的晶振,为了支持1Mbit/s的传输速率,设计时还必须采用16MHz以上的晶振。
nRF24E1的其它引脚还有12个。其中IREF用于连接外部偏置参考电阻。其余为电源和接地脚。
部分程序代码:#include "C8051F020.h"//包含C8051F020硬件信息的头文件
#include "absacc.h"//包含绝对地址访问信息的头文件
#include"math.h"
sbit LCD_EP=P2^4
sbit LCD_RW=P2^2
sbit LCD_RS=P2^0
#define LCD_Data_BUS_Out P7
#define LCD_Data_BUS_In P7
#define key P5
unsigned char keyval
int i
typedef unsigned int uint
code unsigned char LCD_InitialCode[]=
unsigned char temp
void Reset_Sources_Init() //禁止看门
{
WDTCN = 0xDE
WDTCN = 0xAD
}
void Port_IO_Init() //交叉开关配置
{
//P74OUT = 0xC0 //p7推挽
P2MDOUT = 0xff //p2推挽
XBR0 = 0x00
XBR1 = 0x00
XBR2 = 0x40 //交叉开关使能
}
void Oscillator_Init() //振荡器初始化,使用片外晶体振荡器
{
uint i = 0
OSCXCN= 0x67 //使用片外晶体谐振器,f>6.7MHz
for (i = 0i <3000i++)//Wait 1ms for initialization
while ((OSCXCN &0x80) == 0) //检测外部振荡器是否有效
OSCICN= 0x08 //选择外部振荡器作为系统时钟,禁止内部时钟
}
//定时器1初始化函数,定时器1作为波特率发生器
void Timer_Init()
{
CKCON = 0x10 //C/T1直接使用系统时钟作为时钟源
TCON = 0x40 //C/T1允许
TMOD = 0x20 //C/T1方式2(8位重装填计数)
TL1 = 0xFA //C/T1波特率115200计数值
TH1 = 0xFA
}
void Init_Device() // 设备初始化函数,在主程序中调用Init_Device()
{
Reset_Sources_Init() //复位源初始化
Port_IO_Init() //端口初始化
Oscillator_Init() //时钟源初始化
Timer_Init() //定时器1初始化
}
有东西就发出来分享啊,我就直接写下面了。
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN :
MOV SP,#60H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV R2,#00H
MOV R3,#00
MOV R4,#00
MOV B,#00H
MOV 33H,#00H十位
MOV 34H,#00H个位
MOV 35H,#00H高四位
KEYCODE EQU 35H
S0: LCALL PRESSKEY 长调用有无按键按下
S1: LCALL DISPLAY长调用数字处理程序段
LJMP S0 返回S0
******************* 有无按键按下
PRESSKEY:
MOV P1,#0F0H
MOV A,P1
CJNE A,#0F0H,D2
LJMP D5
D2: LCALL DELAY10MS
MOV A,P1
CJNE A,#0F0H,KEYVALUE
LJMP D5
*********************按键键值判断
KEYVALUE:MOV 33H,#00H
mov 34H,#00H
MOV P1,#0F0H
MOV A,P1
ANL A,#0F0H ANL与 *** 作
MOV B,A
MOV P1,#0FH
MOV A,P1
ANL A,#0FHANL与 *** 作
ORL A,B ORL或 *** 作
MOV KEYCODE,A
MOV R3,#00
D4: MOV A,R3
MOV DPTR,#TABBLE2
MOVC A,@A+DPTR
CJNE A,KEYCODE,D3
MOV A,R3
MOV R2,A
LJMP D5
D3: INC R3
LJMP D4
D5: RET
***********************************数字处理程序段
DISPLAY:
MOV A,R2
CJNE A,#10,CMP1
CMP1: JC LOOP2
LJMP LOOP3
LOOP2: MOV A, R2
MOV 34H,A
LJMP DISPLAY1
LOOP3: MOV B,#10
DIV AB
MOV 33H,A
MOV A,B
MOV 34H,A
LJMP DISPLAY1
**********************************************************显示程序段
DISPLAY1:
MOV DPTR,#TABBLE1
MOV A,34H
MOVC A,@A+DPTR
MOV P2,#07FH
MOV P0,A
ACALL DELAY5MS
MOV DPTR,#TABBLE1
MOV A,33H
MOVC A,@A+DPTR
MOV P2,#0BFH
MOV P0,A
ACALL DELAY5MS
RET子程序返回
*****************************************************
DELAY:
延时子程序
MOV R5,#100
DELAY0: LCALL DELAY10MS
DJNZ R5,DELAY0
LJMP HUJK
DELAY10MS:MOV R4,#2
DELAY2 : LCALL DELAY5MS
DJNZ R4,DELAY2
LJMP HUJK
DELAY5MS:
MOV R6,#25
DELAY1:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DELAY1
HUJK : RET子程序返回
***************************************************
TABBLE1:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,08H
?******************************************************
TABBLE2:
DB 0EBH,77H,7BH,7DH,0B7H,0BBH,0BDH,0D7H,0DBH,0DDH,7EH,0BEH,0DEH,0EEH,0E7H,0EDH,0FFH
*****************************************************
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)