⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 atmega128单片机上实现的nrf905无线收发程序
💻 C
字号:
/*
*2008,浙江工业大学信息与控制研究所
*All rights reserved
*
*文件名称:ECG_NRF905.C
*摘    要:主函数,实现心电数据的采集,发送
*
*当前版本:1.0
*作    者:董齐芬
*完成日期:2008.5.17
*
*取代版本:
*原 作 者:
*完成日期:
*/

//#include "time.h"
//#include "mcp42010.h"
//#include "adc.h"
#include "nrf.h"
#include "common.h"
#include "spi.h"
#include "int.h"

unsigned char receive_addr[4]={0x56,0x31,0x56,0x31};                 //4字节的接收地址a513d36a
unsigned char send_addr[4]={0x13,0x65,0x13,0x65};                   //4字节的发送地址
unsigned char ECG_data[ECG_LENGTH];  //存放心电数据1024个
unsigned char *w_ptr=ECG_data;       //将采集到的数据存放到存储区的地址指针
unsigned char *r_ptr=ECG_data;       //无线发送时数据存储区的地址指针
unsigned char nrf_data[PACKAGE_LENGTH];          //正要发送的无线数据包    0x5f+心电数据+序列号
unsigned char receive_data[PACKAGE_LENGTH];          //接收到的无线数据包    0x5f+心电数据+序列号
unsigned char second=0x80;           //秒的次序,8秒一次循环
unsigned char led_flag=0;

void mcu_init(void);   //声明处理器初始化函数

#pragma interrupt_handler Int_DR: 7		
void Int_DR(void)                            //外部中断INT5,中断向量号为7,接收数无线据
{
    LED_YELLOW;
	RxPacket(receive_data);
	//////////////////////还应改变一下缓冲区的指针(接收多个包时)
 
}

/*
*函数功能:主函数
*输入参数:无
*输出参数:无
*返 回 值:无
*/
void main(void)
{  
   unsigned char i,j,s;
   s=0;
   
   CLI();             //disable all interrupts
   mcu_init();        //处理器各模块初始化 
   
   for (i=0;i<PACKAGE_LENGTH-1;i++)
   {
     nrf_data[i]=i;   //测试数据,每个数据包的前PACKAGE_LENGTH-1个数据都一致,最后一个字节为数据包的序列号
   }
   
   while (1)
   {
	  
	  nrf_data[PACKAGE_LENGTH-1]=s;   //代表数据包的序列号
	  set_Tmode();              //把905设置成发送模式
	  EIMSK&=~BIT(5);           //发送时将屏蔽外部中断5
	  LED_RED;
	  set_Taddr(send_addr);
      TxPacket(nrf_data);
	
      if (led_flag)
	  {
		LED_RED;
		led_flag=0;
	  }
	  else
	  {
		LED_YELLOW;
		led_flag=1;
	  }
	  
	  EIFR|=0XFF;           //清除外部中断的标志位
	  set_Rmode();           //nRF设置成接收模式 必须有下一句的开启外部中断5和上一句的清除外部中断的标志位
	  EIMSK|=BIT(5);         //开启外部中断5,以监测是无线模块是否收到数据
	  
      Delays();              //延时一段时间继续发送
	  s++;
	  if (s==250)
	  {
	    s=0;
	  }
    }
}
	   
   
/*
*函数功能:处理器初始化函数,将要用到的各个模块的初始化函数放在一起
*输入参数:无
*输出参数:无
*返 回 值:无
*/
void mcu_init(void)
{
  initled();     //led灯初始化
  initbuzzer();  //蜂鸣器初始化
  init_spi();
  init_905();    //nrf905上电初始化
  set_confword(receive_addr);//设置905配置寄存器
  send_conf();   //配置寄存器内容
  init_INT();        //DR引脚中断初始化
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -