📄 main.c
字号:
/***************************************
*2008,浙江工业大学信息与控制研究所
*All rights reserved
*
*文件名称:main.c
*摘 要:接收节点测试主程序,用来测试丢包,传输时间和载波侦听
*
*当前版本:1.1
*作 者:王微
*完成日期:2008.7.9
****************************************/
#include<iom128v.h>
#include<macros.h>
#include"nrf.h"
#include"spi.h"
#include"common.h"
#include"INT.h"
//LED显示驱动
#define LED_YELLOW PORTA|=(1<<PORTA0);PORTA&=~(1<<PORTA1);
#define LED_RED PORTA&=~(1<<PORTA0);PORTA|=(1<<PORTA1);
unsigned char R_flag=0; //接收到其他节点的数据包的标志
unsigned char send_addr[4]={0x56,0x31,0x56,0x31}; //4字节的发送地址
unsigned char receive_addr[4]={0x13,0x65,0x13,0x65}; //4字节的接收地址a513d36a
unsigned char broad_addr[4]={0xff,0xff,0xff,0xff}; //4字节的广播地址
unsigned char receive_data[PACKAGE_LENGTH]; //PACKAGE_LENGTH字节的接收数据缓存区
unsigned char transmit_data[PACKAGE_LENGTH]; //PACKAGE_LENGTH字节的发送数据缓存区
unsigned char flag=0;
unsigned int pack_num=0; //接收到数据包的个数
#pragma interrupt_handler Int_DR: 7
void Int_DR(void) //外部中断INT5,中断向量号为7,接收数无线据
{
RxPacket(receive_data);
//////////////////////还应改变一下缓冲区的指针(接收多个包时)
R_flag=1; //接收到其他节点的数据包的标志
}
void main(void)
{
int i;
init_spi();
init_905();
init_INT(); //初始化外部中断
set_confword(receive_addr);//以后在初始条件下,接收地址应该为广播地址
send_conf(); //设置905的配置字
EIFR|=0XFF; //清除外部中断的标志位
set_Rmode(); //nRF设置成接收模式 必须有下一句的开启外部中断5和上一句的清除外部中断的标志位
EIMSK|=BIT(5); //开启外部中断5,以监测是无线模块是否收到数据
LED_YELLOW;
while(1)
{
if(R_flag==1)
{
R_flag=0;
pack_num++;
if(0xffff==pack_num)
{
pack_num=0;
}
/* */
if(flag==0)
{
LED_RED;
flag=1;
}
else if(flag==1)
{
LED_YELLOW;
flag=0;
}
/**/
set_Tmode();
EIMSK&=~BIT(5); //屏蔽外部中断5
set_Taddr(send_addr);
//Delay650us(); //写地址和写数据之间要延时
TxPacket(receive_data); //转发接收到的数据
EIFR|=0XFF; //清除外部中断的标志位
set_Rmode();
EIMSK|=BIT(5); //开启外部中断5 */
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -