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

📄 ad.c

📁 ARM7 lpc2132 利用快速傅里叶算法实现电容测量功能源代码
💻 C
字号:
#include "config.h"
#include "data.h"
#include "pin.h"
#include "function.h"
#include <math.h>
/*
*********************************************************************************************************
** 函数名称 :IRQ_Timer0()
** 函数功能 :定时器0中断服务程序,取反LED9控制口。
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
unsigned short dac_cnt=0;
unsigned short turn_flags=0;

capmdata timer0_getdata;


void Sdelay(void){
	unsigned int t;
	for(t=0;t<500;t++);
}	


void __irq IRQ_Timer0 (void)
{	
	int ADC_Data,point; 
	T0IR = 0x01;				/* 清除中断标志									*/
	VICVectAddr = 0x00;
	point=dac_cnt%1024;			/* 通知VIC中断处理结束	*/	
	DACR=(sintable[point] << 6);
	ADC_Data = AD0DR;					// 读取ADC结果
	if(turn_flags==ZX_TURN){
		timer0_getdata.Zx_data[point] = (ADC_Data >> 6) & 0x3ff;
		timer0_getdata.Zx_Ref_data_point=point; //记录基准信号相位
	}else if(turn_flags==R0_TURN){
		timer0_getdata.R0_data[point] = (ADC_Data >> 6) & 0x3ff;
		timer0_getdata.R0_Ref_data_point=point; //记录基准信号相位
	}
	
	if(dac_cnt<20478) 
		dac_cnt++;
	 else{ 
	 	dac_cnt=0; 
	 	if(turn_flags==WAIT_TURN)
	 		turn_flags=RUN_TURN;
	 	 else turn_flags=FINISH_TURN;
	} 	
	
	if(dac_cnt==1 && (turn_flags!=FINISH_TURN)){
		SW_VOL_ZX;
		turn_flags=ZX_TURN;
	}else if(dac_cnt==10239 && (turn_flags!=FINISH_TURN)){
		SW_VOL_R0;
		turn_flags=R0_TURN;
	}
}

/*读写万用表IC max134cpl OK!*/
int dmmTohost(int addr){
	int temp;
	IO0DIR  &= ~(DMM_D0|DMM_D1|DMM_D2|DMM_D3);
	if(addr&1) IO1SET = DMM_A0;
	 else 	   IO1CLR = DMM_A0;
	if(addr&2) IO0SET = DMM_A1;
	 else 	   IO0CLR = DMM_A1;
	if(addr&4) IO0SET = DMM_A2;
	 else 	   IO0CLR = DMM_A2;
	Sdelay();
	IO0CLR  = DMM_READ;
	Sdelay();
	temp=IO0PIN; 
	temp&=(DMM_D0|DMM_D1|DMM_D2|DMM_D3);
	IO0SET  = DMM_READ;
	return temp>>17;
	
}
void hostTodmm(int addr, int data){
	if(addr&1) IO1SET = DMM_A0;
	 else 	   IO1CLR = DMM_A0;
	if(addr&2) IO0SET = DMM_A1;
	 else 	   IO0CLR = DMM_A1;
	if(addr&4) IO0SET = DMM_A2;
	 else 	   IO0CLR = DMM_A2;
	Sdelay();
	IO0DIR  |= (DMM_D0|DMM_D1|DMM_D2|DMM_D3);	
	if(data&1) IO0SET = DMM_D0;
	 else      IO0CLR = DMM_D0;
	if(data&2) IO0SET = DMM_D1;
	 else      IO0CLR = DMM_D1;
	if(data&4) IO0SET = DMM_D2;
	 else      IO0CLR = DMM_D2;
	if(data&8) IO0SET = DMM_D3;
	 else      IO0CLR = DMM_D3;
	Sdelay();
	IO1CLR  = DMM_WRITE;
	Sdelay();
	IO1SET  = DMM_WRITE;
	Sdelay();
	IO0DIR  &= ~(DMM_D0|DMM_D1|DMM_D2|DMM_D3);
}
/////////////////////////////////////////////////////////
//file end//

⌨️ 快捷键说明

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