单片机/MCUwilliam hill官网
直播中

Black&White

11年用户 124经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[问答]

蓝牙小车程序问题

#include
#define uchar unsigned char
#define uint unsigned uint

uchar a;

void init()
{
        TMOD=0x20;                //设置定时器1为方式2
        PCON=0x00;                //设置SMOD(PCON.7)为0,波特率不加倍
        TH1=0xfd;                //设置波特率初值为9600
        TL0=0xfd;                //
        TR1=1;                        //启动定时器1
        REN=1;                        //使能接收

        SM0=0;                        //
        SM1=1;                        //设置串口为工作方式1

        EA=1;                        //打开总中断开关
        ES=1;                        //打开串口中断开关
}

void main(void)
{
        init();
        while(1);

}
       
        void ser() interrupt 4
        {
                ES=0;
                RI=0;                 //将接收中断标志位清0
                a= SBUF;         //将接收到的数据赋给a               
                switch(a)
                {
                  case 31: P2=0x17; break;                //前进
                  case 34: P2=0x1b; break;                //右转
                  case 33: P2=0x27; break;                //左转
                  case 32: P2=0x2b; break;                //后退          
                  case 37: P2=0x00; break;                //停止
                  case 35: P2=0x17; break;                //加速
                  case 36: P2=0x2b; break;                //减速          
                  
                   default: break;
                         
                }
        ES=1;
       
}
大家帮我看看那里不对,怎么会没反应

回帖(3)

泥菩萨

2013-11-3 17:09:33
看不懂啊看不懂
举报

张腾

2013-12-22 17:15:57
你试试编译一下

#include
#define uchar unsigned char
#define uint unsigned int
uchar a;

void init()
   {
     TMOD=0X20;   //设置定时器1为方式2
     TH1=0xfd ;     
     TL1=0xfd ;   //装初值
     TR1=1;       //启动定时器1
     REN=1;       // 使能接收

     SM0=0;
     SM1=1;       //设置串口为工作方式1

     EA=1;       // 打开总中断开关
     ES=1;       // 打开串口中断开关
   }
         
    void main()
    {
        init();
        while(1);
     }

   void ser() interrupt 4
           {
           ES=0;
           RI=0;   //将接受中断标志位清0;
                          
           a=SBUF; //将接受到的数据赋值给a
                        
        switch(a)
    {
      case 65:  P2=0X17;  break;   //  发送的是A  前进指令
      case 66:  P2=0X1B;  break;   //  发送的是B  右转指令
      case 67:  P2=0X27;  break;   //  发送的是C  左转指令
      case 68:  P2=0X2B;  break;   //  发送的是D  后退指令

      case 97:   P2=0X00;  break;  //发送的是a   停止指令
      case 98:   P2=0X00;  break;  //发送的是b   停止指令
      case 99:   P2=0X00;  break;  //发送的是c   停止指令
      case 100:  P2=0X00;  break;  //发送的是d   停止指令

      //P2口是我的电机驱动的控制端

      default: break;
     }
         ES=1;
        }


举报

张腾

2013-12-22 17:22:27
要么把REN=1放到SM0=0;SM1=1;后边,,,也就是先设置串口模式,再允许串口接受,这样可以避开串口方式0接受数据
举报

更多回帖

发帖
×
20
完善资料,
赚取积分