#include
//********************************************
//***********分为50档,0为最低速,50为全速。
//********************************************
sbit IN1= P1^0;
sbit IN2= P1^1;
sbit IN3= P1^2;
sbit IN4= P1^3;
sbit EN1= P1^4; //左电机使能
sbit EN2= P1^5; //右电机使能
unsigned int L_pwm=30;
unsigned int R_pwm=30;
unsigned int f=0; //50等分信号数
// PWM调速信号初始化函数
void pwm_initial(void)
{
TMOD=0x22; //定时器0,1工作方式2,8位自动装入计数。
TH1=0xF0;
TL1=0xF0; //定时器赋初值 计时20us,50次为1ms,为一PWM信号周期
EA=1;
ET1=1;
TR1=1; //开中断
TR0=0;
}
//1KHzPWM 50等分信号产生中断函数
void F_PWM(void) interrupt 3
{
if(f > 50) f=0;
if(f <= L_pwm) EN1=1;
else EN1=0;
if(f <= R_pwm) EN2=1;
else EN2=0;
f++;
}
//停止函数*******************************
void stop(void)
{
IN1=0; //左电机停止
IN2=0;
IN3=0; //右电机停止
IN4=0;
}
//前进函数*******************************
void run(void)
{
IN1=1; //左电机正转
IN2=0;
IN3=1; //右电机正转
IN4=0;
}
void main()
{
pwm_initial();
while(1)
{
run();
delay(100);
stop();
delay(100);
}
}
也就是电机转动后就一直转动着,速度可以调,但是就是不会停下来,也就是run()后面的函数仿佛都失效了,为什么啊,大神们求解!