/***********************************************************************/
/* */
/* FILE : Main.c */
/* DATE : 22.12.2016 1.00 First Release */
/* DESCRIPTION : Main Program */
/* CPU TYPE : R5F1176A */
/* */
/* */
/***********************************************************************/
#include "iodefine.h"
#include "macrodefine.h"
#include "clock.h"
#include "opa.h"
#include "it12bit.h"
#include "adc.h"
#include "buzzer.h"
#include "intp0.h"
/******************************************************************************
Global Variables
******************************************************************************/
uint8_t AD_Result[10]; /* Array for A/D result */
uint8_t Count = 0; /* A/D result counter */
uint8_t Calculate_Flag = 0; /* Calcultate flag after A/D sampling */
uint8_t Value_Smoke; /* The average of A/D data */
/******************************************************************************
Extern global Variables defined in other files
******************************************************************************/
extern uint8_t IR_Light;
extern uint8_t Test_Flag;
/******************************************************************************
Global Function Prototypes
******************************************************************************/
void main(void);
/******************************************************************************
Private Function Prototypes
******************************************************************************/
static void Init_system(void);
static uint8_t Calculate_Smoke( uint8_t * DataPoint);
/***********************************************************************************************************************
* Function Name: main
* Description : The main loop of the project.
* Arguments : None
* Return Value : None
***********************************************************************************************************************/
void main(void)
{
DI();
Init_system();
Start_IT12bit();
EI();
while(1U)
{ /* sampling the result of AMP3O */
if(IR_Light == 1)
{
ADCS = 1U;
while( ADCS );
AD_Result[Count] = ADCRH;
Count++;
}
else
{
Count = 0;
}
/* Calculate_Flag is set to 1 after A/D sampling */
/* Calculate the smoke value is stopped when testing alarm LED and buzzer */
if( (Calculate_Flag == 1) && (Test_Flag == 0x00) )
{
Value_Smoke = Calculate_Smoke(AD_Result);
if(Value_Smoke > SMOKE_ALARM)
{
LED_DIR = PORT_OUT; /* alarm LED pin output enable */
Init_Buzzer();
PCLOE0 = 1U; /* pclbuz pin output enable */
}
else
{
LED = LOW;
LED_DIR = PORT_INPUT; /* alarm LED pin output disable */
PCLOE0 = 0U; /* pclbuz pin output disable */
BUZZER = LOW;
BUZZER_DIR = PORT_INPUT;
}
Calculate_Flag = 0;
}
}
}
/***********************************************************************************************************************
* Function Name: Init_system
* Description : This function initializes the system of MCU.
* Arguments : None
* Return Value : None
***********************************************************************************************************************/
static void Init_system(void)
{
Init_LOCO();
Init_OPA();
Init_IT12bit();
Init_ADC();
Init_INTP0();
}
/******************************************************************************
* Function Name : Calculate_Smoke
* Description : This function calculate the smoke value.
* Arguments : none
* Return Value : uint8_t- OPA3 output
******************************************************************************/
static uint8_t Calculate_Smoke( uint8_t * DataPoint)
{
/* Local variables */
uint8_t i = 0;
uint16_t t_max_data,t_min_data;
uint16_t t_TempData;
t_max_data = *DataPoint;
t_min_data = *DataPoint;
t_TempData = 0;
while(i++ < 5)
{
if( *DataPoint > t_max_data )
t_max_data = *DataPoint;
if( *DataPoint < t_min_data )
t_min_data = *DataPoint;
t_TempData += *DataPoint;
DataPoint++;
}
/* Get the average value after delete the max data and min data */
t_TempData = ( t_TempData - t_max_data - t_min_data );
t_TempData = t_TempData/3;
return((uint8_t)t_TempData);
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
烟雾探测模组程序源码.zip (74个子文件)
rl78i1d_smoke_detector_battery_software
rl78i1d_smoke_detector.rcpe 372KB
src
inc
intp0.h 653B
it12bit.h 705B
macrodefine.h 2KB
opa.h 860B
iodefine.h 42KB
buzzer.h 665B
it8bit.h 699B
clock.h 684B
adc.h 773B
buzzer.c 612B
clock.c 2KB
it12bit.c 4KB
it8bit.c 3KB
opa.c 4KB
adc.c 3KB
main.c 5KB
intp0.c 2KB
DefaultBuild
it12bit.obj 6KB
adc.obj 4KB
hdwinit.obj 2KB
cstart.obj 4KB
intp0.obj 5KB
buzzer.obj 3KB
stkinit.obj 3KB
opa.obj 4KB
rl78i1d_smoke_detector_battery.abs 16KB
clock.obj 3KB
rl78i1d_smoke_detector_battery.mot 4KB
rl78i1d_smoke_detector_battery.map 2KB
opa.c.obj 3KB
it8bit.obj 4KB
main.obj 5KB
rl78i1d_smoke_detector_battery.clnk 1KB
cstart.asm 6KB
rl78i1d_smoke_detector_battery.mtpj 491KB
hdwinit.asm 718B
stkinit.asm 1KB
rl78i1d_smoke_detector_battery.rcpe 372KB
rl78i1d_smoke_detector_software
rl78i1d_smoke_detector.rcpe 371KB
src
inc
intp0.h 653B
it12bit.h 705B
macrodefine.h 2KB
opa.h 860B
iodefine.h 42KB
it8bit.h 699B
clock.h 684B
adc.h 773B
clock.c 2KB
it12bit.c 4KB
opa.c 4KB
adc.c 3KB
main.c 4KB
intp0.c 2KB
rl78i1d_smoke_detector.mtpj 489KB
DefaultBuild
rl78i1d_smoke_detector.mot 4KB
it12bit.obj 6KB
rl78i1d_smoke_detector.map 2KB
rl78i1d_smoke_detector.abs 14KB
adc.obj 4KB
hdwinit.obj 2KB
cstart.obj 4KB
intp0.obj 5KB
buzzer.obj 3KB
stkinit.obj 3KB
opa.obj 4KB
clock.obj 3KB
opa.c.obj 3KB
it8bit.obj 4KB
main.obj 5KB
rl78i1d_smoke_detector.clnk 947B
cstart.asm 6KB
hdwinit.asm 718B
stkinit.asm 1KB
共 74 条
- 1
资源评论
zhangwuji1990
- 粉丝: 1
- 资源: 354
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功