749964424 发表于 2013-3-5 21:05:44

msp430G2553 捕获通道 、不能进入中断函数

#include <msp430G2553.h>
#include "N5110.h"

int ccr1_num={0};
int num=0;
int flag=0;
int ccr1_jian={0};
int sum_flag=0;
int data=0;
void main()
{
// int i=0;
WDTCTL = WDTPW + WDTHOLD;//关闭看门狗0
TACTL|=TASSEL_1+TAIE+MC_2+TACLR;//SMCLK 作为时钟源,开中断,增计数模式
TACCTL0|=CM_1+SCS+CAP+CCIE+CCIS_0;//上升沿触发,同步捕获,捕获模式,允许中断
/* BCSCTL1 &= ~XT2OFF;                //打开XT2高频晶体振荡器
do
{
    IFG1 &= ~OFIFG;                  //清除晶振失败标志
    for (i = 0xFF; i > 0; i--);      //等待8MHz晶体起振
}
while ((IFG1 & OFIFG));            //晶振失效标志仍然存在?
BCSCTL2 |= SELM_2 + SELS;          //MCLK和SMCLK选择高频晶振*/
N5110_init();
P1DIR &= ~BIT0;//捕获通道
P1SEL |= BIT0;
_EINT();
while(1)
{
   
    N5110_add_xy(0,1);
    N5110_led_int(data);
}

   

}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)//捕获到上升沿,触发中断
{
N5110_add_xy(0,0);
N5110_led_int(22);
ccr1_num=CCR1;
num++;
if(num==2)
{
    num=0;
    if(ccr1_num<ccr1_num)//前一次计数小于后一次计数,未溢出
    {
      ccr1_jian=ccr1_num-ccr1_num;
    }
    else                      //ccr1寄存器溢出
    {
      ccr1_jian=(65535-ccr1_num)+ccr1_num;
    }
    flag++;
    sum_flag+=ccr1_jian;
    if(flag==9)
    {
      flag=0;
      data=sum_flag/10;//取十次求平均
    }
}
   
}
页: [1]
查看完整版本: msp430G2553 捕获通道 、不能进入中断函数