为什么我只能够捕获一路呢?第二路不能够正常的工作呢?
#include <msp430x14x.h>
#include "LCD1602.h"
unsigned int upflag=0;
unsigned int downflag=0;
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
LcdInit();
P1DIR &=~ BIT2+BIT3;
P1SEL = BIT2+BIT3; //设置P1.2为端口功能模块使用,即做捕获源
TACTL = TASSEL_2 +TACLR +TAIE + MC1;//ACLK
CCTL1 = CM_1 +SCS +CAP +CCIE; //输入上升沿捕获,CCI0A为您捕获信号源
CCTL2 = CM_1 +SCS +CAP +CCIE; //输入上升沿捕获,CCI0A为您捕获信号源
_EINT();
while(1){
WriteCommand(0x80);
WriteData(upflag+0x30);
WriteCommand(0xC0);
WriteData(downflag+0x30);
}
}
/*******************************************
定时器A中断服务子函数
捕获待测信号上升沿
**********************************************/
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV) //向量查询
{
case 2: //捕获中断
if(CCTL1 & CM0) //捕获到上升沿
upflag++; TACCTL1 &=~CCIFG; break;
case 4:
if(CCTL2 & CM0) //捕获到上升沿
upflag++; TACCTL2 &=~CCIFG; break;
default:
break;
}
}
此帖出自
小平头技术问答
一周热门 更多>