我的程序
#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 但是單片機給電之后,按下按鍵電機無反應,請問是怎么回事?
|