請教各位大佬個問題,我寫了一個步進電機梯形加減速程序,但是運行時不夠平順,實際運行時表現就是急啟急停,我是業余初學者,學歷不高,想了很久,網上也沒有實際的例程,有的看不懂,如果哪位大佬有空的話能不能幫我改一下,感激不敬。還有一個問題就是如果多個步進脈沖放在主程序內的話因為定時器的影響,步進運行時會卡頓,所以只能放在定時器內,但是所有步進程序都放在定時器內的話,又太多了,擔心會出錯,這兩個問題困擾了很久不知道怎么改,芯片用的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++);
}
|