电机没有转动
C语言 单片机
无
电机转动两周停止
#include<reg52.h>
unsigned long beats=0;
void TurnMotor(unsigned long angle); //函数声明
void main()
{
EA=1; //使能总中断
TMOD=0x01; //设置T0模式
TH0=0xF8; //高低位初值(2ms)
TL0=0xCD;
TR0=1; //计数器to启动
ET0=1; //T0中断开关
TurnMotor(360*2); //转动2圈,传入角度
while(1);
}
void TurnMotor(unsigned long angle) //计算所需要的拍数
{
EA=0;
beats=(angle*4076)/360; //计算所需要的拍数
EA=1;
}
/*中断服务函数*/
void interrupttimer0() interrupt 1
{
unsigned char tmp;
static unsigned char index=0;
unsigned char code BeatCode[8]={ //步进电机节拍对应的io控制代码
0xE,0xC,0xD,0x9,0xB,0x3,0x7,0x6
};
TH0=0xF8; //重新赋初值
TL0=0xCD;
while(beats--) //拍数结束循环结束
{
tmp=P1;
tmp=tmp&0xF0;
tmp=tmp | BeatCode[index]; //节拍低四位赋值
P1=tmp;
index++;
index=index&0x07; //到8置0
}
P1=P1|0x0F; //电机停止工作
}