#include<reg51.h> //头文件
sbit ENA=P0^0; /* */
sbit IN1=P0^1; /* 定义针脚 */
sbit IN2=P0^2; /* */
sbit IN3=P0^3; /* */
sbit IN4=P0^4; /* */
sbit ENB=P0^5; /* */
void MotorMoshi(unsigned nNum) //电机转向函数
{
/*此段为选择电机转向*/
switch(nNum)
{
case 1: //前进
IN1=1;
IN3=1;
break;
case 2: //后退
IN1=0;
IN3=0;
break;
case 3: //左前
IN1=1;
IN3=1;
break;
case 4: //左后
IN1=0;
IN3=1;
break;
case 5: //右前
IN1=0;
IN3=1;
break;
case 6: //右后
IN1=0;
IN3=0;
break;
case 7: //左旋转
IN1=0;
IN3=1;
break;
case 8: //右旋转
IN1=1;
IN3=0;
break;
}
/*取IN1和IN3的反值*/
if(IN1==0)
IN2=1;
else
IN2=0;
if(IN3==0)
IN4=1;
else
IN4=0;
/*使能ENA,ENB为1或0*/
if((nNum==1)||(nNum==2)||(nNum==3)||(nNum==4)||(nNum==7)||(nNum==8))
ENA=1;
else
ENA=0;
if((nNum==1)||(nNum==2)||(nNum==5)||(nNum==6)||(nNum==7)||(nNum==8))
ENB=1;
else
ENB=0;
}
void delay(void) //延时5S
{
unsigned char a,b;
for(b=19;b>0;b--)
for(a=130;a>0;a--);
}
void main(void)
{
unsigned a;
a=0;
while(1)
{
MotorMoshi(a);
delay();
a++;
if(a==9)
{
break;
}
}
}
|