OpenEdv-开源电子网

标题: 用串口助手发送一个数据给单片机,单片机控制步进电机旋转指定角度,程序哪里出错了能帮我看看吗 [打印本页]

作者: 灼灼    时间: 2019-6-2 14:16
标题: 用串口助手发送一个数据给单片机,单片机控制步进电机旋转指定角度,程序哪里出错了能帮我看看吗
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar step_n[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
uchar step_s[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};
uint  t=180;
uchar i;
uint j;
void delay(uint a)
{
while(a--);
}

void motor_n()
{
      while(j--)
      {
    for(i=0;i<8;i++)
    {
      P0=step_n[i];
      delay(t);
    }
   }
   while(1);
}
void uart_init() //????????????
{
        TMOD=0x20;         //???ü????????????2
        TH1=0xF3;         //????????????????????????4800
        TL1=0xF3;
        PCON=0x80;         //????????
        TR1=1;                 //????????
        SCON=0x50;         //????????????1
        ES=1;                 //???????ж?
        EA=1;                 //?????ж?
}
void uart() interrupt 4
{
        uchar receiveData;
        j=SBUF;
  //P0=0X00;
  while(j--)
  {                  
        motor_n();
    }

        receiveData=SBUF;        //??????????????
        RI=0;                            //????????ж???λ
        SBUF=receiveData;   //????????????????????????
        while(!TI);                    //??????????????
        TI=0;                            //????????????λ
}

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



作者: Plly    时间: 2019-6-2 19:16
不知道你的具体错误是什么,大概看程序发现void motor_n()
{
      while(j--)
      {
    for(i=0;i<8;i++)
    {
      P0=step_n[i];
      delay(t);
    }
   }
   while(1);
}里面存在死循环,并且这个函数在中断函数中调用了,程序会死在这里,
作者: 灼灼    时间: 2019-6-2 20:25
Plly 发表于 2019-6-2 19:16
不知道你的具体错误是什么,大概看程序发现void motor_n()
{
      while(j--)

那应该具体怎么修改一下呀

作者: liaoliaoliao    时间: 2019-7-12 10:24
楼主  后来搞定了没  
作者: langcai    时间: 2019-7-17 13:11
收藏学习




欢迎光临 OpenEdv-开源电子网 (http://openedv.com/) Powered by Discuz! X3.4