📄 qnrf.txt
字号:
//文件名:main.c
/**************************************************
*
* nRF2401A PTR4000模块简单通讯测试
* 使用CPU:mega16
* 描述: 如果数据通讯正确,则LED灯闪烁;
* 注意:
1、nef2401A配置字是先写第15字节的!!
2、发送后要延时等发送结束后才能转回接收模式,否则数据发送不出
*
* 时间:2007年12月
* www.goodmcu.cn
* www.goodmcu.com
*
* 编译环境:IAR AVR V4.20A
* 硬件实验平台:TY-AVR-J2 + PTR4000模块 各2块
*
* 连接方式:
* PA0——PWR
* PA1——CE
* PA2——CS
* PA4——DR1
* PA5——DATA
*
* PD5—— LED 用于通讯的状态指示灯
*
* 外接11.059Mhz晶振(需要设CKSEL=1111 SUT=11)
*
**************************************************/
#include <config.h>
////变量定义////////////////////////////////////////////////////////////////////
uchar TxBuf[SIZE]; //发送缓冲区,所要发送的数据放在这里面
uchar RxBuf[SIZE]; //接收缓冲区
bit bTimer,bRfSend;
uchar T0Cnt,RfCnt;
void main()
{
T0Cnt=T0N;
RfCnt=RFTN;
init_devices(); //CPU初始化
nrf2401A_Init(); //nrf2401A初始化
while (1)
{
if (bTimer)
{
bTimer=0;
}
#ifdef MASTER
if (bRfSend)
{
bRfSend=0;
RfSendProc(); //发送测试
}
#endif
RfRecvProc(); //接收处理
};
}
/*------------------------------------------------------
接收处理
------------------------------------------------------
*/
void RfRecvProc()
{
uchar i;
if ((PINA&(1<<DR2))==0) return;//DR=1时表示数据接收对而且Crc正确
//已经接收到数据
nrf2401A_ReadData();//读出...
for(i=0;i<10;i++)
{
if(RxBuf[i]!=(i+i))
return;
}
//数据接收正确...灯指示
CPL(PORTD,LED);
//从机回送数据包,这样双方都能指示是否收到有效数据包
#ifndef MASTER
DelayMs(5);
RfSendProc();
#endif
}
/*------------------------------------------------------
发送测试
------------------------------------------------------
*/
void RfSendProc()
{
uchar i;
for (i=0;i<32;i++) TxBuf[i]=i+i;
nrf2401A_SendData(); //发送测试数据
DelayMs(5); //必须,马上转回RxMode的话数据发不出
nrf2401A_RxOn(); //重新回到接收状态
}
/*------------------------------------------------------
延时程序
------------------------------------------------------
*/
//毫秒级延时
void DelayMs(uchar ms)
{
char i;
for (i=0;i<ms;i++)
{
DelayUs(1000);
}
return;
}
//微秒级延时
void DelayUs(uint us)
{
uint i;
for (i=0;i<us;i++)
{
__no_operation();
__no_operation();
__no_operation();
__no_operation();
__no_operation();
__no_operation();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -