⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ashi.cpp.bak

📁 上、下边沿开始测量脉冲脉宽
💻 BAK
字号:
#include "stdio.h"
#include "memory.h"

//返回采样数据中每个脉宽内含的采样数据个数
void impluse_width(unsigned long RadData[1024],unsigned int N[1024]);

/*
//返回采样数据中脉宽内含的采样数据平均个数
unsigned int impluse_width(unsigned long RadData[1024]);
*/

void main()
{
	// 采样得到的数据
	unsigned long SampleData[1024];
	
	//采样数据中可能含有多个脉冲,将每个脉宽含的采样数据个数记录于SampleNum
	//最后根据需要,可求在脉宽时间内平均的采样个数
	unsigned int SampleNum[1024];//数据大小根据实际调整
/*

	memset(SampleNum,0,16*sizeof(unsigned int));
 	
	// Test
	for(int i=0; i<=15; i++)
	{
		if(i%2)
			SampleData[i]=0x00000011;
		else
			SampleData[i]=0x11111100;
	}

*/
	impluse_width(SampleData,SampleNum);
	
//	printf("Over!");

}
void impluse_width(unsigned long RadData[1024],unsigned int N[1024])
{
	int	i,j,k;
	int NSample;	//脉宽内采样点个数
	unsigned int RadDataTemp1,RadDataTemp2;
	bool	SampleFlag;		//采样标志;采到上边沿:SampleFlag=1;采到下边沿:SampleFlag=0; 

	i=0;
	j=0;
	k=0;
	NSample=0;
	SampleFlag=false;
	while (i<16)	//开始搜索边沿
	{
		//开始,RadDataTemp1为第一个采样数据,RadDataTemp2为第二个采样数据;
		//以后,RadDataTemp1=RadDataTemp2,RadDataTemp2为第三、四、......个采样数据
		//RadData采样数据格式,现认为是先存高位后存低位,用右移;否则左移
		if((i==0)&&(j==0))
		{
			RadDataTemp1=(RadData[i]&(0xFF000000>>(8*j)))>>(24-8*j);
			j++;
		}
		else
			RadDataTemp1=RadDataTemp2;
		
		RadDataTemp2=(RadData[i]&(0xFF000000>>(8*j)))>>(24-8*j);
		j++;

		if (RadDataTemp1 < RadDataTemp2)
		//判断上升沿:	后一个采样数据大于前一个采样数据;
		//或者根据实际改变 判断标准
			SampleFlag=true;
		else if (RadDataTemp1 > RadDataTemp2)
		//判断下降沿:	后一个采样数据小于前一个采样数据;
		//或者根据实际改变 判断标准
			SampleFlag=false;

		if (SampleFlag)
		//测到上升沿,开始计采样个数 
			NSample++;
		else if(NSample!=0)
		//在有计数的前提下(即先测到上升沿),测到下降沿,停止计数,存贮
		{
			N[k]=NSample;
			NSample=0;
			k++;
		}

		if (j>3)
		//完成对4个采样数据的处理
		{
			j=0;
			i++;
		}
	}

}


/*
unsigned int impluse_width(unsigned long RadData[1024])
{
	int	i,j,k;
	int NSample,N[1024];	//脉宽内采样点个数
	unsigned int RadDataTemp1,RadDataTemp2;
	bool	SampleFlag;		//采样标志;采到上边沿:SampleFlag=1;采到下边沿:SampleFlag=0; 

	i=0;
	j=0;
	k=0;
	NSample=0;
	memset(N,0,1024*sizeof(int));
	SampleFlag=false;
	while (i<1024)	//开始搜索边沿
	{
		//开始,RadDataTemp1为第一个采样数据,RadDataTemp2为第二个采样数据;
		//以后,RadDataTemp1=RadDataTemp2,RadDataTemp2为第三、四、......个采样数据
		//RadData采样数据格式,现认为是先存高位后存低位,用右移;否则左移
		if((i==0)&&(j==0))
		{
			RadDataTemp1=(RadData[i]&(0xFF000000>>(8*j)))>>(24-8*j);
			j++;
		}
		else
			RadDataTemp1=RadDataTemp2;
		
		RadDataTemp2=(RadData[i]&(0xFF000000>>(8*j)))>>(24-8*j);
		j++;

		if (RadDataTemp1 < RadDataTemp2)
		//判断上升沿:	后一个采样数据大于前一个采样数据;
		//或者根据实际改变 判断标准
			SampleFlag=true;
		else if (RadDataTemp1 > RadDataTemp2)
		//判断下降沿:	后一个采样数据小于前一个采样数据;
		//或者根据实际改变 判断标准
			SampleFlag=false;

		if (SampleFlag)
		//测到上升沿,开始计采样个数 
			NSample++;
		else if(NSample!=0)
		//在有计数的前提下(即先测到上升沿),测到下降沿,停止计数,存贮
		{
			N[k]=NSample;
			NSample=0;
			k++;
		}

		if (j>3)
		//完成对4个采样数据的处理
		{
			j=0;
			i++;
		}
	}
	
	//在脉宽时间内平均的采样个数
	unsigned int average;
	average=0;
	for(int l=0; l<k; l++)
	{
		average+=N[k];
	}

	return average/k;

}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -