关于单片机串口控制电机通信

2019-07-15 18:29发布

#include<reg52.h>
#define uchar unsigned char
sbit D1=P0^0; //电机
sbit D2=P0^1;
uchar a,flag;
void main()
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        SM0=0;
        SM1=1;
        REN=1;
        EA=1;
        ES=1;
        PCON=0x80;
        while(1)
        {

                if(flag==1)
                {
                        flag=0;
//                        SBUF=a;
                        while(!ti);
                        TI=0;
                }
                switch(a)
                {
                        case 0xfe:D1=0;D2=1;break;
                }
        }
}

void serial() interrupt 4
{
      ES=0;
      if(RI)        /* RI==1 */
      {  
                 a=SBUF;
                flag=1;
                RI=0;
      }
      ES=1;
}

如上代码:红 {MOD}那个语句,没有注释掉的时候,串口助手可以看到,电机也会动,但好像是发什么数据都会动;当我把那句注释掉,发什么数据电机都不动了;另外,新手提问一下,如果我想实现发送0xfe就正转,0xfd就反转,应该程序怎么写,求大神~~

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