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

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条回答
11hyliang1
1楼-- · 2019-07-16 14:45
sxl1971 发表于 2014-9-21 21:17
红 {MOD}的话是把数据发送到上位机,没有的话当然看不到数据。

可是我要的不是看到我发的什么数据,我要的电机转动,屏幕能否回馈并不是我的目的
11hyliang1
2楼-- · 2019-07-16 18:10
好了,我找到问题了,我的初始化那部分波特率倍化了,改为PCON=0x00;(就是设置SMOD最高位,波特率倍化为0),再外加一句SCON=0x50;程序就能正常了
liuzhaoxin1020
3楼-- · 2019-07-16 23:12
不错的文档,值得收藏
能给个建议吗
4楼-- · 2019-07-17 03:20
 精彩回答 2  元偷偷看……

一周热门 更多>