430捕获口怎样设置

2019-03-24 13:51发布

430捕获口怎样设置,不使用默认的接口,而使用另外的TA接口 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
毛一剑
2019-03-24 18:33
< 以P2.1作为捕获输入口,如下程序可以实现对P2.1口的脉冲计数
注意看中断处的设置
#include <msp430g2553.h>
long int mmm=0,n=0;
void main (void)
{
WDTCTL = WDTPW+WDTHOLD;                    //关闭看门狗定时器
//P1SEL = 0xff;                              //设置P1.2端口为功能模块使用
P2SEL = 0xff;
///////////////////////////////////
P1DIR |= 0x01;
P1OUT &= 0x00;
///////////////////////////////////
TA1CTL = TASSEL_2+TACLR+TAIE+MC_2;            //定时器A时钟信号选择ACLK,同时设置定时器A计数模式为连续增计模式
TA1CCTL1 = CM0+SCS+CAP+CCIE+CCIS_0;                        //输入上升沿捕获,CCI0A为捕获信号源
TA1CCR1=0xffff;
_EINT();                                   //中断允许
while(1)
        {
        /////////////////////////////这一部分将来正式程序中可以去掉的
volatile unsigned int i;
if((0x08 & P1IN))
n++;
else n--;
    P1OUT ^= 0x01;                          // Toggle P1.0 using exclusive-OR
    i =50;                              // Delay
    do (i--);
    while (i != 0);
        }
///////////////////////////////这一部分将来正式程序中可以去掉的
}

#pragma vector=TIMER1_A1_VECTOR               //定时器A中断处理
__interrupt void timer_a(void)
{
switch(TA1IV)                               //向量查询
   { case 2:                                 //捕获中断
           if ((0x08 & P1IN)) mmm++;       // if P1.3 set, set P1.0
               else  mmm--;
        break;
   }
}

一周热门 更多>

相关问题

    相关文章