#include "msp430f5529.h"
void qj() //前进
{
P3OUT &=~ BIT0;
P3OUT |=BIT1;
P2OUT &=~ BIT0;
P2OUT |=BIT2;
}
void tz() //停止
{
P3OUT &=~ BIT0;
P3OUT &=~ BIT1;
P2OUT &=~ BIT0;
P2OUT &=~ BIT2;
}
void zz() //左转
{
P3OUT |=BIT0;
P3OUT &=~ BIT1;
P2OUT &=~ BIT0;
P2OUT |= BIT2;
}
void yz() //右转
{
P3OUT &=~ BIT0;
P3OUT |= BIT1;
P2OUT |= BIT0;
P2OUT &=~ BIT2;
}
void main()
{
WDTCTL = WDTPW | WDTHOLD; //关闭看门狗
P4DIR |=BIT1; //输出给ENA(左轮)
P4DIR |=BIT2; //输出给ENB(右轮)
P3DIR |=BIT0; //输出给IN1(左轮)
P3DIR |=BIT1; //输出给IN2
P2DIR |=BIT0; //输出给IN3(右轮)
P2DIR |=BIT2; //输出给IN4
P6DIR |=BIT0; //输出给蜂鸣器
P1DIR &=~ BIT2; //左红外输入
P4DIR &=~ BIT3; //右红外输入
P1REN |= BIT2; //为输入设置上拉电阻
P4REN |= BIT3;
P4OUT &=~ BIT1; //将输入输出口置零
P4OUT &=~ BIT2;
P3OUT &=~ BIT0;
P3OUT &=~ BIT1;
P2OUT &=~ BIT0;
P2OUT &=~ BIT2;
P6OUT &=~ BIT0;
P1OUT &=~ BIT2;
P4OUT &=~ BIT3;
while(1)
{
if(P1IN&BIT2) //P1.2为1时执行
{
if(P4IN&BIT3) //P4.3为1时执行
{
tz(); //调用“停止”指令
}
else //P4.3为0时执行
{
zz();
}
}
else //P1.2为0时执行
{
if(P4IN&BIT3) //P4.3为1时执行
{
yz();
}
else //P4.3为0时执行
{
qj();
}
}
}
}