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; }