www.pudn.com > comper.rar > zu.c


/**************************************************************************** 
文件名:main.c 
编写者:czhang 
描述:适用比较器A测电阻值模块。用于13xx 14xx 15xx 16xx系列。 
      MCLK:DCO   ACLK:32.768kHz 
版本:2005-4 V1.0 
*****************************************************************************/ 
#include  
#include "general.h" 
#include "comparator.h" 
#include "df_bh_timera.h"    
#include "zu.h" 
 
#define RDIR P1DIR 
#define ROUT P1OUT 
#define REF BIT0	//参考电阻接 P1.0 
#define RSEN BIT1	//被测电阻接 P1.1 
 
#define REF_ZHI 10	//参考电阻的阻值,K欧姆 
 
/**************************************************************************** 
测量电阻阻值 
返回值:电阻值 
*****************************************************************************/ 
float MeasureR() 
{ 
	unsigned int time_ref0,time_ref1,time_rsen0,time_rsen1,iq0,iq1; 
	float fr; 
	unsigned char t0,t1; 
 
  //充电                                 
	RDIR |= REF;		//通过REF充电 
	ROUT |= REF; 
	DelayMs(15);		//延时15ms 
 
	//测REF放电时间 
   ClearBuHuo(); 
   time_ref0=TAR; 
	ROUT &= ~REF;	//通过REF放电   
	while(GetTime(&time_ref1)==0); //读REF放电的时间 
   iq1=time_ref1-time_ref0; 
	 
	//充电 
	RDIR |= REF;		//通过REF充电 
	ROUT |= REF; 
	DelayMs(15);		//延时15ms 
	 
	//测RSEN放电时间 
   ClearBuHuo(); 
   time_rsen0=TAR; 
	RDIR &= ~REF;     	//停止通过REF充电 
	ROUT &= ~RSEN;   	//通过RSEN放电 
	RDIR |= RSEN;   
    
	while(GetTime(&time_rsen1)==0); 	//读REF放电的时间 
	iq0=time_rsen1-time_rsen0; 
	RDIR &= ~RSEN;				//停止放电 
      
	//计算电阻值                                                   
	fr=(float)REF_ZHI*iq0; 
	fr=fr/iq1; 
	return fr; 
}