标题:
MSP430单片的寻迹小车程序(输出两路PWM波)
[打印本页]
作者:
fdqc
时间:
2019-8-9 17:27
标题:
MSP430单片的寻迹小车程序(输出两路PWM波)
源码
#include "msp430x14x.h"
#include "Keypad.h"
void turnright1(void);
void turnleft1(void);
void round(void);
void line(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
int i;
P6DIR |= BIT2;P6OUT &= ~BIT2; //打开电平转换
P2DIR |=BIT3+BIT0;P2OUT &= ~BIT3;
P2OUT |=BIT0;
P3DIR |=0X11;
P3OUT |=0X10;
P3OUT &=~ BIT0;
P4DIR &=~(BIT0+BIT1+BIT2+BIT3+BIT4);
P5DIR |=0XFF;
P5OUT =0X51;
P5OUT &=~ BIT1;
for(i=0;i<2000;i++);
CCR0=512-1;
CCR1=462;
CCR2=50;
CCTL0=CCIE;
CCTL1=CCIE;
CCTL2=CCIE;
_EINT();
TACTL|=TASSEL_1+MC_3;
while(1)
{
switch((P4IN & 0X1f))
{
case 7: turnleft1();
break;
case 15: turnleft1();
break;
case 23:turnleft1();
break;
case 28: turnright1();
break;
case 29:turnright1();
break;
case 30:turnright1();
break;
case 19: line();
break;
case 25: line();
break;
case 27: line();
break;
case 31: round();
break;
}
}
}
#pragma vector=TIMERA1_VECTOR
__interrupt void timer_A1(void)
{ //_EINT();
switch(TAIV)
{case 2:
P5OUT ^=0X01;
break;
case 4:
P5OUT ^=0X02;
break;
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void timer_A0(void)
{ P5OUT |=BIT0;
P5OUT &=~ BIT1;
}
void turnright1(void)
{ P5OUT &=~ (BIT4+BIT5+BIT7);
P5OUT |=BIT6;
//CCR1=470;
//CCR2=5;
}
/*void turnright2(void)
{
CCR1=470;
CCR2=0;
}*/
void turnleft1(void)
{ P5OUT &=~ (BIT5+BIT6+BIT7);
P5OUT |=BIT4;;
//CCR1=500;
//CCR2=45;
}
void round(void)
{ P5OUT &=~ (BIT5+BIT6+BIT7);
P5OUT |=BIT4;
//CCR1=470;
//CCR2=5;
}
void line(void)
{ P5OUT &=~ (BIT5+BIT7);
P5OUT |= BIT4+BIT6;
}
复制代码
作者:
admin
时间:
2019-8-9 18:14
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1