|
非常感謝大佬的耐心解答!我能夠理解了基本原理,只是還有一個(gè)問題是我只需要簡單實(shí)現(xiàn)這個(gè)二相電機(jī)以10mm/s的線速度運(yùn)行,也就是每秒轉(zhuǎn)2.5圈,而電機(jī)的步距角是0.9度,所以我的想法是每400ms定時(shí)一次轉(zhuǎn)一圈,可我仿真時(shí)把電機(jī)設(shè)為0.9度之后發(fā)現(xiàn)電機(jī)只在小幅度范圍轉(zhuǎn)動(dòng),幾乎不動(dòng),不知道是不是定時(shí)的方式不對呢?程序如下,希望大佬能幫忙看下,十分感謝!
#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; //定時(shí)器中斷打開
TR0=1; //定時(shí)器開關(guān)打開
}
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;}
}
}
|
|