首先肯定你的单片机能够扑捉到你的脉冲:那么:
设置10ms定时器,在此时间内判断x、y值,然后判断x*x是否大于y即可。
另外没有硬件电路图是没法帮你编程的,比如你的脉冲宽度?脉冲接入管脚,电机控制管脚,等待。
#include
#include
int motor_a,motor_dir,i,j,n;
/************************** end 电机 声明 *******************************/
/************************** 电机 语句 *******************************/
void motor_init(void)
{
IE=0x82;
TMOD=0x01;
TH0=0x4c;
TL0=0x00;
TR0=1;
}
void motor_inter() interrupt 1
{
i++;
if (i==n)
{
if(motor_dir)
{
motor_a = _crol_(motor_a,1);
//循环左移1位,逆时针旋转
P1 = (motor_a&0x1e)|(P1&0xe1);
}
else
{
motor_a = _cror_(motor_a,1);
//循环右移1位,顺时针旋转
P1 = (motor_a&0x1e)|(P1&0xe1);
}
i=0;
j--;
}
if(j==0)TR0=0;
TH0=0xe0;
TL0=0x00;
}
motor(int a,int b,int c)
{
motor_dir=a;
n=b;
j=c/1.8;
motor_a = 0x11;
i=0;
motor_init();
}
main()
{
motor(1,1,720);
while(1)
{
PCON=PCON|0x01;
}
}
这是一个简单的电机程序,你可以参考参考。。。
无能为力,俺