[讨论] 求大神帮忙看看这个程序

GreedOne   2014-7-7 08:18 楼主


#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   电机就不转了      求教这是为什么?

回复评论 (3)

if(timer1 < 40)        //改变30这个值可以改变直流电机的速度
                {
                        PWM=1;
                        delayms();
                        timer1++;
                }
                else
                {
                        PWM=0;
                }
下面这句else{
PWM=0;}
掉了timer1++;
点赞  2014-7-7 08:41
首先你这个写法无法进入执行timer1=0;
而延时0.5ms*40也才20ms,这个这么短的时间就算转也很难判断出来吧
20ms后PWM只能一直为0了
点赞  2014-7-7 08:41
引用: 微末凡尘 发表于 2014-7-7 08:41
if(timer1 < 40)        //改变30这个值可以改变直流电机的速度
                {
                    ...

多谢你了   问题解决了哈
点赞  2014-7-7 08:45
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复