C语言 用CLOCK函数实现时间检测问题!

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:53:32
外设:一个传感器信号,一台电机。
电机速度会随时改变,如何实现电机速度的实时检测?
换句话说如何实现电机运行周期的检测?
检测程序,大家看看给个意见,我用CLOCK函数实现的。但是目前,当我的电机固定在某一个速度时,传感器检测速度值变化太大。如果不用此函数,用什么方法实现?恳请各位大哥,发表意见,帮助小弟解决问题!在此谢过!

F=0;
for(;;)
{/*==============================================*/
while((inportb(ADD_IN)&0x01)==SYMBOL);//传感器不动作
while((inportb(ADD_IN)&0x01)!=SYMBOL);//传感器动作

F++;
if(F==1)
frist=clock(); //第一次计时
else if(F==5)
second=clock(); //第五次计时

if(F==5)
{
T0=(second-frist)/CLK_TCK/4; //电机四周平均周期计算
speed_0=(int)(60/T0); //电机速度计算
F=0;
}
count++;
}
我现在采用普通PC机作为上位机控制,也就是标准的X86系列机。
应该不会涉及到线程的问题。

时间检测有两种:时钟周期与CPU周期
貌似C语言只能用前者,并且只能精确到毫秒。
///////////////////////////////////////
我不知道你这具体是怎么回事,不过clock用法很简单,事件开始取一下时间,结束再取一次,两次的差就是用了多少时间,我不知道你程序是否涉及多线程。