蓝牙手机控制小车出了点问题,求大神指正

2019-07-15 12:49发布

左转跟右转都是可以的,但是前进或后退的时候四个I/O口都输出的是1,求大神帮忙看看是哪里出问题了,下面是程序:

//头文件:
#include <reg52.h>

//IO引脚定义:

sbit IN1=P1^0;               
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
//以上为电机驱动板输入引脚定义,
//IN1和IN2控制左轮电机,输出对应的OU1和OUT2接左轮电机,
//IN3和IN4控制右轮电机,输出对应的OU3和OUT4接右轮电机

//宏定义
#define L_go      IN1=0;IN2=1 //左轮前进
#define L_back    IN1=1;IN2=0 //左轮后退   
#define L_stop    IN1=0;IN2=0        //左轮停止,两个输出1也可以
#define R_go            IN3=0;IN4=1 //右轮前进
#define R_back          IN3=1;IN4=0 //右轮后退
#define R_stop          IN3=0;IN4=0 //右轮停止,两个输出1也可以

#define car_go                                L_go; R_go                //小车前进               
#define car_back                        L_back;R_back        //小车后退
#define car_left                        R_go;L_stop                //小车左转弯
#define car_right                        L_go;R_stop        //小车右转弯
#define car_stop                        L_stop;R_stop        //小车停车
//#define car_left_360        R_go;L_back                //小车向左360度转,也可以认为是大转弯
//#define car_right_360        L_go;R_back                //小车向右360度转,也可以认为是大转弯

//数据定义
unsigned char l_buf[3];//串口接收缓冲
unsigned char l_bufcc;//接收个数索引


//延时
void Delay(unsigned int t)
{
        unsigned int c;
        while(t--){
                c=10000;
                while(c--);
        }
}
/************************************************************************/
void sint() interrupt 4          //中断接收3个字节
{  
        if(RI){                         //是否接收中断
                RI=0;
    l_buf[l_bufcc]=SBUF;
                l_bufcc++;
                if(l_bufcc==3) l_bufcc=0;
        }
}   
/************************************************************************/
        void main(void)
{       

        TMOD=0x20;  
  TH1=0xFd;                     //11.0592M晶振,9600波特率
  TL1=0xFd;
  SCON=0x50;  
  PCON=0x00;
  TR1=1;
        ES=1;   
  EA=1;   
       
        while(1){
                switch(l_buf[2]){//比较按键码,进入相应处理
                        case 'A'://前进
                                car_go;
                                Delay(1);
                                break;
                        case 'B'://后退
                                car_back;
                                Delay(1);
                                break;
                        case 'C'://左转
                                car_left;
                                Delay(1);
                                break;
                        case 'D'://右转
                                car_right;
                                Delay(1);
                                break;
                        case 'F'://停止
                                car_stop;
                                break;
                }                       
        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。