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

📄 ad.c

📁 DSP2407AD转换程序。不包含AD初始化程序。
💻 C
字号:
/*************************************************************************
文件名:	AD_result()
日期:      	2008年1月3日
公司(作者): 马学平
描述和说明:	AD_result()
*************************************************************************/
#include"F2407REGS_c.h"
#include"float.h" 
extern unsigned char pa[];
extern unsigned char err;
extern float ad_result[];	//AD采样结果暂存
extern float ad_remember[];	//AD记忆,以便滤波
extern unsigned char ad_ok[];		//AD最终值
extern unsigned char look[];		//监控显示
extern unsigned long clock_t4=5000000;
unsigned char t4pr;
extern unsigned char run;			//运行命令,=1为运行命令使能
extern unsigned char running;		//运行标志,=1为运行状态
AD_result()
	{
		 unsigned char i;
		 float Ue;
		 Ue=pa[13];
		 while((ADCTRL2 & 0x0202)==0)
			;
		 ad_result[0]=RESULT0>>6;
		 ad_result[1]=RESULT1>>6;
		 ad_result[2]=RESULT2>>6;
		 ad_result[3]=RESULT3>>6;
		 ad_result[4]=RESULT4>>6;
		 ad_result[5]=RESULT5>>6;
		 ad_result[6]=RESULT6>>6;
		 ad_result[7]=RESULT7>>6;
		 ad_result[8]=RESULT8>>6;
		 ad_result[9]=RESULT9>>6;
		 ad_result[10]=RESULT10>>6;
		 ad_result[11]=RESULT11>>6;
		 ADCTRL2=ADCTRL2|0x0200;
		ad_remember[0]=ad_result[0];//PL如果需要滤波另加
		ad_remember[1]=ad_result[1];//ES
		ad_remember[3]=ad_result[3];//vol
		ad_remember[4]=ad_result[4];//heat
		ad_remember[2]=ad_remember[2]*(pa[165]-1)/pa[165]+ad_result[2]/pa[165];		
		ad_remember[5]=ad_remember[5]*(pa[165]-1)/pa[165]+ad_result[5]/pa[165];
		ad_remember[6]=ad_remember[6]*(pa[165]-1)/pa[165]+ad_result[6]/pa[165];
		ad_remember[7]=ad_remember[7]*(pa[165]-1)/pa[165]+ad_result[7]/pa[165];
	for(i=0;i<8;i++)
		{
		 if(ad_remember[i]<10)
			ad_ok[i]=0;		 
		 else if(ad_remember[i]>1010)
		 	ad_ok[i]=1000;
		 else
			ad_ok[i]=ad_remember[i]-10;
		}
		 look[5]=ad_ok[3];			//直流母线
		 look[11]=ad_ok[3]*19/27;	//输入电压有效值
		 look[8]=ad_ok[4];			//温度???待处理
		 if(look[11]>Ue*3/40)		//>75%吸合
			PBDATDIR=PBDATDIR & 0xffef;//jc=1
		 if(look[11]<Ue*13/200)		//<65%断开
			PBDATDIR=PBDATDIR | 0x0010;//jc=0
//		 if(look[11]<Ue*pa[58]/1000)
//			if((run==1)||(running==1))
//				err=err|8;//off
		 if(look[11]>Ue*pa[59]/1000)
			if((run==1)||(running==1))
				err=err|16;//ou
		 CMPR4=ad_ok[6]*5;//仅测试用
		 CMPR5=ad_ok[7]*5;//仅测试用
		 t4pr=clock_t4/(ad_ok[6]*50);
		 if(t4pr!=0)
			t4pr=t4pr-1;
		 T4PER=t4pr;			
		 T4CMP=T4PER/2;		
	}


⌨️ 快捷键说明

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