#define uchar unsigned char
uchar stepd[]={0x01,0x03,0x02,0x06,0x04,0xc0,0x08,0x09}
uchar num=0,fx=0
sbit key1=P3^0
sbit key2=P3^1
sbit key3=P3^2
void t0isr() interrupt 1
{
TH0=(65536-10000)/256
TL0=(65536-10000)%256
P2=stepd[num]
if(fx==0){num++num%=8}
if(fx==1)
{
if(num==0)num=7
else num--
}
}
main()
{
TMOD=0x01
TH0=(65536-10000)/256 //改变初值可以调整速度。
TL0=(65536-10000)%256
TR0=1
ET0=1
EA=1
while(1)
{
if(key1==0)
{
while(key1==0)
TR0=~TR0
}
if(key2==0)
{
while(key2==0)
fx=0
}
if(key3==0)
{
while(key3==0)
fx=1
}
}
}
可以实现正反转,只要程序的赋值部分反着写就OK,例如以单拍正转为例:P0=0X01delay()//0001
P0=0X02delay()//0010
P0=0X04delay()//0100
P0=0X08delay()//1000
那么反转就是:
P0=0X08delay()
P0=0X04delay()
P0=0X02delay()
P0=0X01delay()
如果要增加驱动力矩,可以同时两线供电,正转赋值如下(应该能看懂吧):
0X03//0011
0X06//0110
0XC0//1100
0X09//1001
第二个问题,能,程序可以略作修改,改为4线即可,当然,程序完全不动也可以让他转起来,只是速度不稳定。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)