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