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

📄 ad9225.c

📁 用keil编写高速AD AD9225的工程文件
💻 C
字号:
#include"AD9225.h"
#include<SST\SST89x5x4.h>
#include<intrins.h>

#define SAMTIME 65

float GetScope()
{
    unsigned char   tempP0[SAMTIME],tempP2[SAMTIME];
    unsigned char   i,j,N,MeasureTime;
	unsigned int temp[SAMTIME];
	float d[SAMTIME];
	float Scope,max,min; 
	bit flag;
	AD9225Clk=0;
	flag=1;
	while(flag){
	MeasureTime++;
	for(i=0;i<SAMTIME;i++){
	  temp[i]=0;
	  tempP0[i]=0;
	  tempP2[i]=0;
	  Scope=0;
		}
	for(i=0;i<SAMTIME;i++){			//GetAD
	  AD9225Clk=1;
	  tempP0[i]=P0;
	  AD9225Clk=0;
	  tempP2[i]=P2;
	  }
	for(i=0;i<SAMTIME;i++){
	  tempP2[i]&=0x1F;	 //屏蔽P2.6,P2.7
      temp[i]|=tempP2[i];					  
	  temp[i]<<=8;
	  temp[i]|=tempP0[i];
	  }
	for(i=0,j=0;i<SAMTIME;i++){
	  if(temp[i]<4096&&temp[i]>512){
	    d[j]=temp[i]*4.0/4096;
		j++;
		}
	  }
	N=j;
	min=4;
	max=0.5;
	for(i=0;i<N;i++){	  
	  if(d[i]<min) 
	    min=d[i];
	  if(d[i]>max) 
	    max=d[i];	  
	  }
	if(MeasureTime>2){
	   Scope=(max-min)*1.0374;
	   flag=0;
	   }
   }
   return Scope;
}

unsigned int* GetAD(unsigned char T)			 //T次
{
	unsigned char i;
	unsigned char tempP0[5],tempP2[5];
	unsigned int temp[5];
	for(i=0;i<2;i++){
	  AD9225Clk=1;
	  tempP0[i]=P0;
	  AD9225Clk=0;
	  tempP2[i]=P2;
	  }
	 for(i=0;i<T;i++){
	  tempP2[i]&=0x1F;	 //屏蔽P2.6,P2.7
      temp[i]|=tempP2[i];					  
	  temp[i]<<=8;
	  temp[i]|=tempP0[i];
	  } 
	  return temp; 
}

/************************************
 采样两次,所得幅度差与间隔1.2uS的比值
*************************************/

float GetSlope()
{
    unsigned char data i;
	unsigned char data tempP0[2],tempP2[2];
	unsigned int temp[2];
	float Slope;
	bit flag=1;
	AD9225Clk=0;
	while(flag){
	  AD9225Clk=1;
	  tempP0[0]=P0;
	  AD9225Clk=0;
	  tempP2[0]=P2;
	  AD9225Clk=1;
	  tempP0[1]=P0;
	  AD9225Clk=0;
	  tempP0[1]=P2;
	  for(i=0;i<2;i++){
	    tempP2[i]&=0x1F;	 //屏蔽P2.6,P2.7
        temp[i]|=tempP2[i];					  
	    temp[i]<<=8;
	    temp[i]|=tempP0[i];
	    }
	  if((temp[1]>512)&&(temp[1]<4096)&&(temp[0]>512)&&(temp[0]<4096)){
	    if(temp[1]>temp[0]){
		    Slope=(temp[1]-temp[0])*4.0/4096;
		    Slope=Slope/1.2;
		    flag=0;
        }
	  }
	  }
	  return Slope;					
}
/************************************
     根据统计规律求占空比,然后求斜率
*************************************/
/*
unsigned int* GetLAD()
{
	unsigned char i;
	unsigned char  data tempP0[2],tempP2[2];
	unsigned int temp[2];
	for(i=0;i<2;i++){
	  AD9225Clk=1;
	  tempP0[i]=P0;
	  AD9225Clk=0;
	  tempP2[i]=P2;
	  }
	 for(i=0;i<2;i++){
	  tempP2[i]&=0x1F;	 //屏蔽P2.6,P2.7
      temp[i]|=tempP2[i];					  
	  temp[i]<<=8;
	  temp[i]|=tempP0[i];
	  } 
	  return temp;
}

float GetSlope()
{
    unsigned char tempP0[SAMTIME],tempP2[SAMTIME];
    unsigned char i,j,N,MeasureTime;
	static int Up,Down;
	unsigned int temp[SAMTIME];
	float d[SAMTIME];
	float Scope,max,min,Slope; 
	bit flag;
	unsigned char T;
	if(T==30){
	   T=0;
	   Up=0;
	   Down=0;
	   }
	T++;
	AD9225Clk=0;
	flag=1;
	while(flag){
	MeasureTime++;
	for(i=0;i<SAMTIME;i++){
	  temp[i]=0;
	  tempP0[i]=0;
	  tempP2[i]=0;
	  Scope=0;
		}
	for(i=0;i<SAMTIME;i++){			//GetAD
	  AD9225Clk=1;
	  tempP0[i]=P0;
	  AD9225Clk=0;
	  tempP2[i]=P2;
	  }
	for(i=0;i<SAMTIME;i++){
	  tempP2[i]&=0x1F;	 //屏蔽P2.6,P2.7
      temp[i]|=tempP2[i];					  
	  temp[i]<<=8;
	  temp[i]|=tempP0[i];
	  }
	for(i=0,j=0;i<SAMTIME;i++){
	  if(temp[i]<4096&&temp[i]>512){
	    d[j]=temp[i]*4.0/4096;
		j++;
		}
	  }
	N=j;
	min=4;
	max=0.5;
	for(i=0;i<N;i++){	  
	  if(d[i]<min) 
	    min=d[i];
	  if(d[i]>max) 
	    max=d[i];	  
	  }
	for(i=0;i<N;i++){
	  if(d[i]<d[i+1]) 
	    Up++;
	  else
	    Down++;
	  }
	if(MeasureTime>2){
	   Scope=(max-min)*1.036944;
	   flag=0;
	   }
   }
   Slope=Scope*(Up+Down)/Up;
   return Slope;
}
*/

⌨️ 快捷键说明

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