非常感謝大佬的耐心解答!我能夠理解了基本原理,只是還有一個問題是我只需要簡單實現這個二相電機以10mm/s的線速度運行,也就是每秒轉2.5圈,而電機的步距角是0.9度,所以我的想法是每400ms定時一次轉一圈,可我仿真時把電機設為0.9度之后發現電機只在小幅度范圍轉動,幾乎不動,不知道是不是定時的方式不對呢?程序如下,希望大佬能幫忙看下,十分感謝!
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar tab[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
unsigned char count,i;
void Init_Timer0(void)
{
TMOD |= 0x01;
TH0=(65535-20000)/256;
TL0=(65535-20000)%256;
EA=1; //總中斷打開
ET0=1; //定時器中斷打開
TR0=1; //定時器開關打開
}
main()
{
Init_Timer0();
while(1)
{
;
}
}
void Timer0_isr(void) interrupt 1
{
TH0=(65535-20000)/256;
TL0=(65535-20000)%256;
count++;
if(count==20)
{
count=0;
{i++;if(i>7)i=0;P0=tab;}
}
}
|