请教各位大佬个问题,我写了一个步进电机梯形加减速程序,但是运行时不够平顺,实际运行时表现就是急启急停,我是业余初学者,学历不高,想了很久,网上也没有实际的例程,有的看不懂,如果哪位大佬有空的话能不能帮我改一下,感激不敬。还有一个问题就是如果多个步进脉冲放在主程序内的话因为定时器的影响,步进运行时会卡顿,所以只能放在定时器内,但是所有步进程序都放在定时器内的话,又太多了,担心会出错,这两个问题困扰了很久不知道怎么改,芯片用的STC89c52rc单片机
感谢!!!!
下面是我的单片机代码,目前是只有加速
#include<reg52.h>
#define uint unsigned
#define uchar unsigned
uchar TY1,TY2;//Y轴
uint M2;//脉冲数
void Delay(uint);//延时子程序
void YY();//Z轴
sbit Y2=P2^1;//Y
sbit A1=P3^4;//按键1
void main()//主函数
{
TY2=20;//加速初始
EA=1;
TMOD=0x11;
ET0=1;
TH0=(65536-400)/256;
TL0=(65536-300)%256;
TR0=1;//启动定时器0
while(1)
{
Delay(6);
}
}
void timer0() interrupt 1 //定时器0
{
TH0=(65536-400)/256;
TL0=(65536-300)%256;
TY1++;//进入中断计数
if(TY1>=TY2)//中断数对比
{
YY();//调用Y轴步进
TY2--;
TY1=0;
if(TY2<=1)//匀速
{
TY2=1;
}
}
}
void YY()//发送脉冲和脉冲计数
{
Y2=1;
Y2=0;
M2++;
}
void Delay(uint n)//延时函数
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<10;j++);
}
|