我想用4个独立按键控制步进电机实现正传反转,加速减速,但是把程序下载进去电机不转,求大神给看看指导一下.
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define GPIO_MOTOR P1
sbit key1 = P3^0;
sbit key2 = P3^1;
sbit key3 = P3^2;
sbit key4 = P3^3;
uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //反转顺序
uchar code FFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //正转顺序
uchar keyvalue;
uint g,d;
void delay(uchar z);
void main()
{
uint i=0;
TMOD = 0x01;
TH0 = 0xba;
TL0 = 0xc3;
ET0 = 1;
EA = 1;
TR0 = 1;
while(1)
{
if(key1==0)
{
delay(10);
if(key1==0)
{
keyvalue=1;
g=0xba;
d=0xc3;
}
while((i>200)&&(key1==0))
{
delay(1);
i++;
}
i=0;
}
if(key2==0)
{
delay(10);
if(key2==0)
{
keyvalue=2;
g=0xba;
d=0xc3;
}
while((i>200)&&(key2==0))
{
delay(1);
i++;
}
i=0;
}
if(key3==0)
{
delay(1);
if(key3==0)
{
g = 0xf9;
d = 0x75;
}
while((i<200)&&(key3==0))
{
delay(1);
i++;
}
i=0;
}
if(key4==0)
{
delay(1);
if(key4==0)
{
g = 0x9d;
d = 0xdb;
}
while((i<200)&&(key4==0))
{
delay(1) ;
i++;
}
i=0;
}
}
}
void timer() interrupt 0
{
uint i=0,j;
uchar SJB[8];
TH0 = g;
TL0 = d;
if(keyvalue==1)
{
for(j=0;j<8;j++)
{
SJB[j]=FFZ[j];
}
}
if(keyvalue==2)
{
for(j=0;j<8;j++)
{
SJB[j] = FFW[j];
}
}
GPIO_MOTOR = SJB[i]&0x1f;
i++;
if(i==7)
{
i=0;
}
}
void delay(uchar z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
} |