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

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就反转,应该程序怎么写,求大神~~

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
阿信509
1楼-- · 2019-07-15 19:00
让电机正转用什么命令呀?让电机反转呢
11hyliang1
2楼-- · 2019-07-16 00:35
 精彩回答 2  元偷偷看……
阿信509
3楼-- · 2019-07-16 02:56
switch(a)
                {
                        case 0xfe:D1=0;D2=1;break;
                        case 0xfd:D1=1;D2=0;break;
                }
这样你试试是不是行
调皮的小五郎
4楼-- · 2019-07-16 05:04



没来得急看,应该不错,先帮你顶
sxl1971
5楼-- · 2019-07-16 07:20
红 {MOD}的话是把数据发送到上位机,没有的话当然看不到数据。
yefengling
6楼-- · 2019-07-16 11:54
你都把SBUF=a注释掉了,那还怎么发送呢?

一周热门 更多>