📄 cymometer.c
字号:
#include"includes.h"
extern unsigned long freq_L,freq_H;
extern unsigned int tim_num;
extern unsigned long freq_plus;
extern double freq;
void read_fpg() //读取数据
{
unsigned int i;
recont=1;
// for(i=0;i<100;i++);
dclk=0;
// for(i=0;i<100;i++);
dclk=1;
// for(i=0;i<100;i++);
dclk=0;
// for(i=0;i<100;i++);
recont=0;
freq_L=freq_H=0;
for(i=0;i<32;i++)
{
dclk=0;
// for(j=0;j<100;j++);
dclk=1;
// for(j=0;j<100;j++);
dclk=0;
// for(j=0;j<100;j++);
ccda = 1;
freq_L=freq_L>>1;
if(ccda)
{
freq_L|=0x80000000;
}
}
for(i=0;i<32;i++)
{
dclk=0;
// for(j=0;j<100;j++);
dclk=1;
// for(j=0;j<100;j++);
dclk=0;
// for(j=0;j<100;j++);
ccda = 1;
freq_H=freq_H>>1;
if(ccda)
{
freq_H|=0x80000000;
}
}
dclk = 0;
recont=1;
freq=((double)freq_L/(double)freq_H)*32768.0;
}
void delay_1msb(void)
{
unsigned int i;
for(i=0;i<1950;i++);
}
void delay_nms(unsigned int num) //延时nms子程序
{
unsigned int i;
for(i=0;i<num;i++)
{
delay_1msb();
}
}
void set_tim() //设定测量时间
{
freq_plus=0;
freq_plus=(freq_L*1000)/tim_num;
if(freq_plus>=100000)
tim_num=1;
else if(freq_plus>=10000&&freq_plus<100000)
tim_num=5;
else if(freq_plus>=1000&&freq_plus<10000)
tim_num=20;
else if(freq_plus>=10&&freq_plus<1000)
tim_num=2000;
else if(freq_plus>=0&&freq_plus<10)
tim_num=4000;
tim=1;
delay_nms(1000);
tim=0;
}
/*void set_freq(unsigned char num) //设定分频系数
{
P0=num;
}*/
void set_clr() //清零
{
// unsigned int i;
cclr=1;
// for(i=0;i<5;i++);
dclk=0;
// for(i=0;i<5;i++);
dclk=1;
// for(i=0;i<5;i++);
dclk=0;
// for(i=0;i<5;i++);
cclr=0;
}
void count_freq() //计算实际频率
{
freq=((double)freq_L/(double)freq_H)*32768.0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -