我的程序
#include <reg52.h>
sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}
#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}
unsigned char Speed;
void DelayUs2x(unsigned char t)
{ while(--t);}
void DelayMs(unsigned char t)
{while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void stepa()
{
unsigned int i=32;
Speed=8;
Coil_OFF
while(i--) /
{
Coil_A1
DelayMs(Speed);
Coil_B1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_D1
DelayMs(Speed);
}
Coil_OFF
}
void stepb()
{
unsigned int i=32;
Speed=8;
Coil_OFF
while(i--)
{
Coil_D1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_B1
DelayMs(Speed);
Coil_A1
DelayMs(Speed);
}
}
void main()
{
while (1)
{switch(P3)
{
case 0xfe:stepa();break;//0xfe = 1111 1110,
case 0xfd:stepb();break;
case 0xfb:stepa();break;
case 0xf7:stepb();break;
case 0xef:stepa();break;
case 0xdf:stepb();break;
case 0xbf:stepa();break;
case 0x7f:stepb();break;
default:break;
}
}
}
我想利用独立按键(8个)控制步进电机,按下按键K1 3 5 7时,执行stepa,也就是正转45度,按下按键K2 4 6 8,执行stepb,也就是反转45度,该程序是0ERRORS 1WARNINGS 但是单片机给电之后,按下按键电机无反应,请问是怎么回事?
|