蓝牙控制单片机风扇电机,完成转动和调速

#按下按键,电机无相应
#通过蓝牙通讯发送数字 0 1 2 3 进行电机的转动和调速,使用的stc89c52rc单片机和l298n电机驱动
#能否帮我看看代码是否正确

#include 
#include 
unsigned char tmp;
unsigned int c=0;
sbit ENA = P1^4;//为1 电机使能
sbit IN1 = P1^2;//为1 电机正转
sbit IN2 = P1^3;//为1 电机反转

void init();   //串口初始化
void send(unsigned char a);     //单字节发送函数
void ctrl(); //接收处理函数

void main()
{
    init();
    while(1)
    {         
        if(RI==1)//是否有数据到来
            {
                RI = 0;
                tmp = SBUF; //暂存接收到的数据
                ctrl(); 
        }      
    }
} 
 
 void init()//串口初始化
 {
    ES=0;//关中断
    SCON = 0x50;// REN=1允许串行接受状态,串口工作模式1,
        //10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变
          TMOD = 0x20;//定时器1工作于方式2,8位自动重载模式,用于产生波特率
          TH1=TL1=0xFD;//波特率9600
          PCON &= 0x7f;//波特率不倍增
          TR1 = 1;//定时器1开始工作,产生波特率
            //发送标志位置0
            TI=0; //接收标志位置0
            RI=0;
            //EA=0;
               ES=1;
               
               ENA=0;
               IN1=0;
               IN2=0;// 使电机全部停止
}
void send(unsigned char a)      //单字节数据发送
{
         TI=0;         
         SBUF=a;
         while(TI==0);
         TI=0;
}

void ctrl()//接收处理函数
{
  unsigned int pwm;
     switch(tmp)
        {
             case '1':
            /*风扇一档转速*/
    
            //定义一个变量pwm,通过对pwm的累加来调控PWM的占空比
                
                while(1)
                {
                for(pwm = 0;pwm <= 1000;pwm++)
                    {
                        if(pwm == 500)
                        {
                            ENA = 1;
                            IN1 = 1;
                            IN2 = 0;
                        }
                        else if(pwm == 1000)
                        {
                            ENA = 0;
                        }
                    }
                }
             case '2':
            /*风扇二档转速*/

                while(1)
                {
                for(pwm = 0;pwm <= 1000;pwm++)
                    {
                        if(pwm == 750)
                        {
                            ENA = 1;
                            IN1 = 1;
                            IN2 = 0;
                        }
                        else if(pwm == 1000)
                        {
                            ENA = 0;
                        }
                    }
                }
            /*风扇三挡转速函数*/

            case '3': 
                {
                    ENA = 1;
                    IN1 = 1;
                    IN2 = 0;
                }

            /*关闭风扇函数*/
 
            case '0': 
            {
                ENA = 0;
            }
        }
    }

这个问题你可以这么排查:
1.先看看蓝牙是否可以通信成功
2.不用蓝牙控制调速,可以用个简单的io控制调速
这也就可以确保每个模块的代码都是ok的,然后在用蓝牙去调速。