c语言中怎么设置计时器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中怎么设置计时器?相关的知识,希望对你有一定的参考价值。

参考技术A C语言计时可以用很多方法。
  1.
如果是想使用秒级别的技术,可用使用C语言库<time.h>自带的clock()进行计时。如:
  #include
<iostream>
  #include
<time.h>
  using
namespace
std;
  int
main()
  
  clock_t
start
=
clock();
  //do
some
process
here
  clock_t
end
=
(clock()
-
start)/CLOCKS_PER_SEC;
  cout<<"time
comsumption
is
"<<end<<endl;
  
  以上方法只能用于秒级别的计时。
  2.如果想使用毫秒级别的计时可以使用2种方法。一种是使用linux的系统库<sys/time.h>,一种是使用CUDA的cutil的库。
  A.
如果使用linux的系统库,则可以使用如下方法:
  #include
<sys/time.h>
  int
main()
  
  timeval
starttime,endtime;
  gettimeofday(&starttime,0);
  //do
some
process
here
  gettimeofday(&endtime,0);
  double
timeuse
=
1000000*(endtime.tv_sec
-
starttime.tv_sec)
+
endtime.tv_usec
-
startime.tv_usec;
  timeuse
/=1000;//除以1000则进行毫秒计时,如果除以1000000则进行秒级别计时,如果除以1则进行微妙级别计时
  
  timeval的结构如下:
  strut
timeval
  
  long
tv_sec;
/*
秒数
*/
  long
tv_usec;
/*
微秒数
*/
  ;
  上述方法可以进行微妙级别的计时,当然也可以进行毫秒和秒的计时。
  B.
如果可以使用CUDA的话,则可以使用CUDA的sdk里面的cutil库里面的函数。
  #include
<cutil.h>
  int
main()
  
  unsigned
int
timer
=
0;
  cutCreatTimer(&timer);//创建计时器
  cutStartTimer(&timer);//开始计时
  //
do
some
process
here
  cutStopTimer(&timer);//停止计时
  cout<<"time
is
"<<cutGetTimerValue(&timer)<<endl;//打印时间
  
参考技术B 秒表计时器的代码
#include
#include
#include
#include
struct
tm
//定义时间结构体,包括时分秒和10毫秒

int
hours,minutes,seconds;
int
hscd;
time,tmp,total;
//time用以计时显示,tmp用以存储上一阶段时间,total记总时间
int
cnt;
file*
fout;
//每次调用update函数,相当于时间过了10ms
void
update(struct
tm
*t)

(*t).hscd++;
//10ms单位时间加1
cnt++;
if
((*t).hscd==100)
//计时满1s,进位

(*t).hscd=0;
(*t).seconds++;

if
((*t).seconds==60)
//计时满一分,进位

(*t).seconds=0;
(*t).minutes++;

if
((*t).minutes==60)
//计时满一小时,进位

(*t).minutes=0;
(*t).hours++;

if((*t).hours==24)
(*t).hours=0;
//delay();
sleep(10);
//sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms

void
display(struct
tm
*t)

//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间
printf("%d:",(*t).hours);
printf("%d:",(*t).minutes);
printf("%d:",(*t).seconds);
printf("%d\r",(*t).hscd);
//printf("now,
press
‘e’
key
to
stop
the
clock…");

void
time_init()
//初始化时间

time.hours=time.minutes=time.seconds=time.hscd=0;

void
get_total()
//计算总时间

total.hscd
=
cnt
%
100;
cnt
/=
100;
total.seconds
=
cnt
%
60;
cnt
/=
60;
total.minutes
=
cnt
%
60;
cnt
/=
60;
total.hours
=
cnt;

int
main()

char
m;
time_init();
cnt
=
0;
fout
=
fopen("timeout.txt","w");
printf("按回车键开始计时!\n");
while(1)

m
=
getch();
if(m
!=
‘\r’)
//读入一个输入,如果是回车,那么跳出次循环
printf("输入错误,仅能输入回车键!\n");
else
break;

printf("已经开始计时,但是你可以按回车键以分段计时!\n");
while(1)

if(kbhit())
//此处检查是否有键盘输入

m=getch();
if(m
==
‘\r’)
//如果等于回车,那么计时结束,跳出循环
break;
else
if(m
==

‘)
//如果等于空格,显示此次计时,初始化计时器

tmp
=
time;
//记录上一段计时器结果
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
//写入文件
time_init();
printf("\n");

else

printf("输入错误,仅支持输入回车键或者空格键!\n");


update(&time);
//更新计时器
display(&time);
//显示计时器时间

tmp
=
time;
//输出最后一次即使结果,写入文件
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total();
//计算总的时间,显示,并写入文件
printf("\n总时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,"统计时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf("已经保存到当前目录下的timeout.txt文件中按任意键结束!");
getch();

以上是关于c语言中怎么设置计时器?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中怎么设置计时器?

求教怎么在C语言中使用定时器

C语言中,用于设置中断、中断信号的函数都有哪些?怎么设置一个发送中断信号(自己定义的)的函数?

怎么用C语言编定时器?

请教高人C51单片机C语言中的中断优先级怎么设置?

单片机C语言用定时器1工作方式1怎么写