📄 main.c
字号:
#include "main.h"
#include "init.h"
#include "x5045.h"
#include "flux.h"
#include "comuni.h"
#include "filter.h"
void set_freq(uint fre) ;
static uchar time_H, time_L ; //存放计时时间
static uint time_enter ;
void main(void)
{
static uint time ,time_av ;
static uint time1 ,time2 ;
static uint data_send ;
static uint i ;
static uchar eleven ;
init() ;
wr_sr(0) ; //设置1.4秒的看门狗,不保护数据
TR2 = 1 ; //启动定时器 2
dog() ;
eleven = 11 ;
while(1) //循环一周的时间大约是7.5ms
{
time_enter += 1 ;
if(time_enter >= 5)
{
time = 5730 ;
eleven = 11 ;
time_enter = 10 ;
}else
{
for(i =999 ; i <= 10000 ; i ++)
{
if(i == 1000)
{
time1 = time_H ;
time1 <<= 8 ;
time1 = time1 + (uint)time_L ;
}
if(i == 9000)
{
time2 = time_H ;
time2 <<= 8 ;
time2 = time2 + (uint)time_L ;
}
}
if(time1 == time2)
{
time = time1 ;
}
}
// if(eleven != 11)
// {
time_av = filte(time) ;
// }else
/* {
for( i = 0 ;i <= 9 ;i ++)
{
time_av = filte(time) ;
}
eleven = 0 ;
}
*/
dog() ;
data_send = press(time_av) ; //计算压力
comuni(data_send) ;
// comuni(time_av) ;
set_freq(data_send) ;
dog() ;
}
}
void measure_freq(void) interrupt 0 //外部中断 0 压频输入
{
static uchar ss = 0 ;
if(ss == 0) //注意是双等号 ==
{
TH1 = 0 ; //16位定时器1测量频率的周期
TL1 = 0 ;
TR1 = 1 ;
ss = 1 ;
time_enter = 0 ;
return ;
}
if(ss == 1)
{
TR1 = 0 ;
time_H = TH1 ;
time_L = TL1 ;
ss = 0 ;
time_enter = 0 ;
return ;
}
}
/*
void measure_freq(void) interrupt 2 //外部中断 1 流量输入中断
{
static uchar ss=0;
if(ss == 0) //注意是双等号 ==
{
TH1=0; //16位定时器1测量频率的周期
TL1=0;
TR1=1;
ss=1;
time_inter = 0 ;
return ;
}
else
{
TR1=0;
flux_H=TH1;
flux_L=TL1;
ss=0;
time_inter = 0 ;
return ;
}
}
*/
void timer2_isr (void) interrupt 5
{
TF2 = 0;
OUT4 = !OUT4 ;
return ;
}
void set_freq(uint fre)
{
uint rcap_press , press_set;
uint press ;
press = fre ;
press_set = press * 0.8 + 200 ; //转换成频率输出
rcap_press = 65536 - 1000000 / (press_set * 2);
RCAP2H = rcap_press >> 8 ;
RCAP2L = rcap_press ;
}
/*x5045复位看门狗函数~~~~~~~~~~~~~*/
void dog(void)
{
CS=0;
CS=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -