📄 main.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 + -