#include <reg24e1.h>
#define TICK 10e-3 // 10ms (100Hz) tick
/* LED1-LED4 */
sbit LED1 = P0^7;
sbit LED2 = P0^6;
sbit LED3 = P0^5;
sbit LED4 = P0^4;
const char Test=0xAA;
struct RFConfig
{
unsigned char n;
unsigned char buf[15];
};
typedef struct RFConfig RFConfig;
#define ADDR_INDEX 8 // Index to address bytes in RFConfig.buf
#define ADDR_COUNT 4 // Number of address bytes
const RFConfig tconf =
{
15,
0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6c, 0x04
};
const RFConfig rconf =
{
15,
0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xaa, 0xbb, 0x12, 0x34, 0x83, 0x6c, 0x05
};
void Delay100us(volatile unsigned char n) reentrant
{
unsigned char i;
while(n--)
for(i=0;i<35;i++)
;
}
void Delayms(volatile unsigned char n) reentrant
{
unsigned char j;
while(n--)
for(j=0;j<10;j++)
Delay100us(10);
}
void WriteRTC(unsigned int m)
{
while(REGX_CTRL & 0x10) // Wait for the interface to be ready
;
REGX_MSB = m >> 8;
REGX_LSB = m & 0xff;
REGX_CTRL = 0x0a;
while(REGX_CTRL & 0x10) // Wait for the interface to be ready
;
}unsigned char SpiReadWrite(unsigned char b)
{
EXIF &= ~0x20; // Clear SPI interrupt
SPI_DATA = b; // Move byte to send to SPI data register
while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
;
return SPI_DATA;
}
void Init_Receiver(void)
{
unsigned char b;
CS = 1;
Delay100us(0);
for(b=0;b<rconf.n;b++)
{
SpiReadWrite(rconf.buf[b]);
}
CS = 0;
CE = 1;
}
void TransmitPacket(unsigned char b)
{
unsigned char i;
CE = 1;
Delay100us(0);
for(i=0;i<ADDR_COUNT;i++)
SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
SpiReadWrite(b);
CE = 0;
Delay100us(3); // Wait ~300us
}
void Init_transmit(void)
{
unsigned char b;
CS = 1;
Delay100us(0);
for(b=0;b<tconf.n;b++)
{
SpiReadWrite(tconf.buf[b]);
}
CS = 0;
}
void RTCISR(void) interrupt 12
{
unsigned char Temp;
EA=0;
WDTI=0;
LED3=0;
Delayms(20);
LED3=1;
PWR_UP=1;
Delay100us(30);
SPICLK=0;
SPI_CTRL=0x02;
Init_transmit();
TransmitPacket(Test);
Init_Receiver();
Delayms(50);
if(DR1==1)
{
Temp=SpiReadWrite(0);
if(Temp==Test)
{
LED2=0;
Delayms(20);
LED2=1;
}
}
EA=1;
}
void main(void)
{
P0_ALT=0x06;
P0_DIR=0x06;
EA=1;
EWDI=1;
LED1=0;
Delayms(20);
LED1=1;
LED2=0;
Delayms(20);
LED2=1;
LED3=0;
Delayms(20);
LED3=1;
LED4=0;
Delayms(20);
LED4=1;
WriteRTC(5/TICK);
while(1)
{
LED1=0;
Delayms(20);
LED1=1;
//CK_CTRL = 0x01;
}
}
24E1code.rar_nrf24e1_唤醒
版权申诉
142 浏览量
2022-09-20
14:56:21
上传
评论
收藏 28KB RAR 举报
weixin_42653672
- 粉丝: 93
- 资源: 1万+
最新资源
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
- 基于MIC+NE555光敏电阻的声光控电路Multisim仿真原理图
- 基于JSP毕业设计-基于WEB操作系统课程教学网站的设计与实现(源代码+论文).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈