直流电机间歇启停

#include <reg52.h>

#define u16 unsigned int
#define u8  unsigned char
	
// 电机开关管脚
sbit moto = P1^0;

u16 k;

// 延迟函数,1ms
void delay1ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

// 电机启动Xs
void motoOnXs(u16 x)
{
	u16 j = 1000*x;
	while(j>0)
	{
		moto = 1;
		delay1ms();	
		j--;
	}
}

// 电机停止Xs
void motoOffXs(u16 x)
{
	moto = 0;
	for(k=0; k<1000*x; k++)
	{
		delay1ms();
	}
}

// 主函数
void main()
{
	// 电机停止2s,启动5s为一个周期不断循环
	while(1)
	{
		u16 flag;	
		if(flag % 2 == 0)
		{
			// 电机停止2s
			motoOffXs(1.5);
		}
		else
		{
			// 电机启动5s
			motoOnXs(1);
		}
		// 改变变量的值
		flag++;
	}
}

 

posted @ 2018-02-10 15:07  半生戎马,共话桑麻、  阅读(476)  评论(0)    收藏  举报
levels of contents