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


/***************************************************************************** 
文件名:df_bh_timera.c 
编写者:czhang 
描述:使用定时器A捕获比较器的输入信号 
版本:1.0	2005-2-20 
*****************************************************************************/ 
#include  
#include "df_bh_timera.h" 
 
#define FINISH 1 
#define N_FINISH 0 
unsigned char StaBuHuo=N_FINISH;   //捕获状态标志 
/***************************************************************************** 
初始化 
*****************************************************************************/ 
void InitBhTimerA() 
{ 
	TACTL = TASSEL_2+TACLR+ID_3;	//定时器A,时钟源:MCLK,连续计数模式,8分频 
	CCTL1 = CCIS_1+CM_2+CAP;	//选择下降沿捕获,CCI1B 为信号源, 
} 
 
/***************************************************************************** 
控制捕获运行或者停止,打开后进入休眠状态,等待捕获中断发生,再退出休眠 
doit:0:停止  100:运行  其他:什么都不做 
*****************************************************************************/ 
void GoBhTimerA(unsigned char doit) 
{ 
	if(doit==0) 
	{ 
		TACTL &= ~MC1;		//关闭计数器 
		CCTL1 &= ~CCIE;		//关闭中断 
	} 
	else 
	{                                    
	   TACCR1=0; 
		TACTL |= MC_2+TACLR;	//打开计数器   
		CCTL1 |= CCIE;   	//捕获中断允许 
	} 
} 
 
/***************************************************************************** 
定时器A中断函数 
中断源:CC1 
*****************************************************************************/ 
#pragma vector=TIMERA1_VECTOR 
__interrupt void TimerA1() 
{ 
	switch (__even_in_range(TAIV, 10) ) 
	{ 
		case 2: 
			//捕获/比较1中断 
			StaBuHuo=FINISH; 
		break;   
	} 
} 
 
/***************************************************************************** 
读捕获状态和捕获值 
buhuo:指向捕获值的指针 
返回值:捕获状态  0:捕获未完成   1:捕获完成 
*****************************************************************************/ 
unsigned char GetTime(unsigned int *buhuo) 
{ 
	unsigned int iq0=N_FINISH; 
	if(StaBuHuo==FINISH) 
	{ 
		iq0=FINISH; 
	} 
	*buhuo=CCR1; 
	return iq0; 
} 
 
/***************************************************************************** 
清除捕获状态标志 
*****************************************************************************/                          
void ClearBuHuo() 
{ 
  StaBuHuo=N_FINISH;   
}