#include <msp430g2553.h>
unsigned int num=1000,pwm=5000,num1=2500,num2=3000,pwm1=5000;
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;
TACTL|=TASSEL_2+TACLR+MC_1+ID_3; // SMCLK ;clear
timer_A;Put in /8
CCTL0=CCIE; //捕获中断允许
CCR0=pwm;
CCR1=num; //TACCR0 装载值
CCTL1=OUTMOD_7; //输出模式复位
P1DIR |= BIT0+BIT1;
P1OUT=BIT0;
P2DIR |= BIT0+BIT1;
P2OUT=BIT0;
P1DIR=BIT6;
P1SEL=BIT6;
TA1CTL|=TASSEL_2+TACLR+MC_1+ID_3; // SMCLK ;clear Timer_A;Put in /8
TA1CCTL0=CCIE;
TA1CCR0=pwm;
TA1CCR1=num;
TA1CCTL1=OUTMOD_7;
P2DIR=BIT2;
P2SEL=BIT2;
CCTL0=CCIE;
P2REN |= BIT3+BIT4;
P2OUT &= ~BIT3+BIT4;
P2DIR &= ~BIT3+BIT4;
P2IES &= ~BIT3+BIT4;
P2IE|=BIT3+BIT4;
P2IFG &= ~BIT3+BIT4;
CCTL0=CCIE;
P1REN |= BIT3+BIT4;
P1OUT &= ~ BIT3+BIT4;
P1DIR &= ~BIT3+BIT4;
P1IES &= ~BIT3+BIT4;
P1IE|=BIT3+BIT4;
P1IFG &= ~BIT3+BIT4;
_EINT(); //使能所有中断
while(1);
}
#pragma vector=PORT2_VECTOR
__interrupt void Port2()
{
TACTL|=TASSEL_2+TACLR+MC_1+ID_3; // SMCLK ;clear Timer_A;Put in /8
//以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。
if((P2IFG&BIT3) == BIT3)
{
TA1CCTL0=CCIE;
TA1CCR0=pwm1;
TA1CCR1=num2;
TA1CCTL1=OUTMOD_7;
P2DIR=BIT2;
P2SEL=BIT2;//2.3检测到下降沿信号,增加左轮转速
P2IFG &= ~BIT3; //清除中断标志
//以下填充用户代码
}
else if((P2IFG&BIT4) ==BIT4)
{
CCTL0=CCIE; //捕获中断允许
CCR0=pwm1;
CCR1=num2; //TACCR0 装载值
CCTL1=OUTMOD_7; //输出模式复位
P1DIR=BIT6;
P1SEL=BIT6;//2.4检测下降沿信号,增加右边轮转速
P2IFG &= ~BIT4; //清除中断标志
//以下填充用户代码
}
LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽
}
#pragma vector=PORT1_VECTOR
__interrupt void Port1()
{
TACTL|=TASSEL_2+TACLR+MC_1+ID_3; // SMCLK ;clear Timer_A;Put in /8
//以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。
if((P1IFG&BIT3) == BIT3)
{
TA1CCTL0=CCIE;
TA1CCR0=pwm1;
TA1CCR1=num1;
TA1CCTL1=OUTMOD_7;
P2DIR=BIT2;
P2SEL=BIT2;//1.3检测下降沿信号,增加左轮转速
P1IFG &= ~BIT3; //清除中断标志
//以下填充用户代码
}
else if((P1IFG&BIT4) ==BIT4)
{
CCTL0=CCIE; //捕获中断允许
CCR0=pwm1;
CCR1=num1; //TACCR0 装载值
CCTL1=OUTMOD_7; //输出模式复位
P1DIR=BIT6;
P1SEL=BIT6;///1.4检测下降沿信号,增加右边轮转速
P1IFG &= ~BIT4; //清除中断标志
//以下填充用户代码
}
LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽
}
一周热门 更多>