nrf51822 软件定时器可定多少

nrf51822 软件定时器可定多少,第1张

如果是指定多少个,只要RAM够你可以自己设置队列个数。(这里根据不同的SDK版本定义不一样,比如版本SDK11申请一个定时器只要用宏APP_TIMER_DEF(timer_id)就可以。)

最大时间参考-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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11845948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存