非常感谢大佬的耐心解答!我能够理解了基本原理,只是还有一个问题是我只需要简单实现这个二相电机以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;}
}
}
|