📄 hf3223.c
字号:
#include "inc/config.h"
u16 t0_cnt[10]={ };//测频值
u16 hf3223_f =0;
u16 test_freq=0;
u08 fhz_20ms[100]={};//ARRAY FOR THE temerary buffer for cnter
BOOL f_h_is_read = false;
u08 hf3223_convert(u16 fhz)
{
u08 RH=100;
//fhz = 2*fhz; //采样周期为500ms
if(fhz > 9595)
{
RH=0;
}
else if( fhz < 8000)
{
RH =100;
}
else
{
RH = (( 9595-fhz)*10/148);
if(RH>100)RH=100;
}
return RH;
}
void hf3223_read(void)
{
if( f_h_is_read ==true)
{
hf3223_f = t0_cnt[0]+t0_cnt[1]+
t0_cnt[2]+t0_cnt[3]+
t0_cnt[4]+t0_cnt[5]+
t0_cnt[6]+t0_cnt[7]+
t0_cnt[8]+t0_cnt[9];
if( hf3223_f < 5000 )
{
f_sensor_h = false;
}
else
{
f_sensor_h = true ;
}
Humidity = hf3223_convert( hf3223_f );
}
}
SIGNAL(SIG_OVERFLOW1)
{
static u08 cnt = 0;
static u08 bufptr=0;
u08 i;
TCNT1 =(65536-2150);//2MS 定时
timer0_stop();
fhz_20ms[cnt] = TCNT0;
TCNT0 =0;
cnt++;
if( cnt == 50 )
{
f_h_is_read = false;//运算过程中,防止读
bufptr++;
if( bufptr==10 )
bufptr = 0;
//使得t0_cnt[0]and t0_cnt[1]
//相加得到hf3223的输出频率
t0_cnt[bufptr]=0;
for( i = 0; i < 50; i++ )
{
t0_cnt[bufptr] += fhz_20ms[i];
}
cnt=0;
f_h_is_read = true;
}
timer0_start();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -