#include
//--定义使用的IO口--//
sbit PWM=P1^0;
//--定义一个全局变量--//
unsigned char timer1;
void delayms();
void main(void)
{
while(1)
{
if(timer1>100) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 < 40) //改变30这个值可以改变直流电机的速度
{
PWM=1;
delayms();
timer1++;
}
else
{
PWM=0;
}
}
}
void delayms()
{
unsigned char a,b;
for(b=71;b>0;b--)
for(a=2;a>0;a--);
}
大家帮忙看看有什么问题吗? 本来是定时器定时0.5ms,电机转速正常 现在我改成延时0.5ms 电机就不转了 求教这是为什么?
if(timer1 < 40) //改变30这个值可以改变直流电机的速度
{
PWM=1;
delayms();
timer1++;
}
else
{
PWM=0;
}
下面这句else{
PWM=0;}
掉了timer1++;
首先你这个写法无法进入执行timer1=0;
而延时0.5ms*40也才20ms,这个这么短的时间就算转也很难判断出来吧
20ms后PWM只能一直为0了