51单片机中如何用串口控制电机运行

2019-07-15 14:58发布

小女子一边看视频,一边学单片机串口的实验,下面是视频中没有问题的程序,可以成功地发送和接收相关的值:
void usartconfiguration()
{
        SCON=0x50;
        TMOD=0x20;
        PCON=0x80;//波特率加倍
        TH1=0xFA;
        TL1=0xFA;
        TR1=1;
        ES=1;
        EA=1;
}

void usart() interrupt 4
{
        unsigned char receive,i;
        receive=SBUF;
        RI=0;
        SBUF=receive;

        while(!TI);
        TI=0;
}

void main()
  {
          usartconfiguration();
        while(1);
        {
        }
  }


在此想自己在电脑中输入参数,实现对电机运动的控制,如输入1,电机正转,输入2,电机反转;于是将usart()函数改为:
void usart() interrupt 4
{
        unsigned char receive,i;
        receive=SBUF;
        RI=0;
        SBUF=receive;
        if(receive==1)
                {
                        for(i=0;i<8;i++)
                        {
                                P1=tap1;//tap1控制电机正转
                                delay(50);//已定义了delay函数
                        }
                }
        if(receive==2)
                {
                        for(i=0;i<8;i++)
                        {
                                P1=tap2;//tap2控制电机反转
                                delay(50);
                        }
                }
        while(!TI);
        TI=0;
}

红 {MOD}部分是后面添加用于控制电机,但是这样下来,发送数值,不仅电机不会转动,而且电脑中也不能接收到数值,请问这是为什么????

我看单片机例程,其中一个介绍输入数字用来控制LED灯,但用的是RS232串口,请问有什么区别??
小女子菜鸟一枚,希望大家赐教!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
elecfansmxy2
1楼-- · 2019-07-15 19:30
 精彩回答 2  元偷偷看……
njutli
2楼-- · 2019-07-15 20:15
你把条件判断里的1、2都换成字符型的试试。我猜想串口没有返回可能是延时的问题,你把延时去掉,直接改变某个IO口的电平,然后外接一个LED指示看看是不是这个问题。
wenxiaaaa
3楼-- · 2019-07-16 01:55
没什么问题
lee_st
4楼-- · 2019-07-16 05:50
串口控制电机??
lee_st
5楼-- · 2019-07-16 07:03
很有想象力的啊?
风之追逐
6楼-- · 2019-07-16 07:59
 精彩回答 2  元偷偷看……

一周热门 更多>