定时器里如何再累加计时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时器里如何再累加计时相关的知识,希望对你有一定的参考价值。

比如24秒定时器,当我触发一次,开始一个24秒的计时,在再计时未停止前,继续给一个触发,并让其累加一个24秒。

参考技术A 用多层循环,先用定时器1中断,定时器最长可以定时65535us也就是65ms多,中断一次1小时标志加1,加到57600是1小时,设置hour标志加1,hour加到5就是5小时。
Timer_int()

if(time_1h<57600)

time_1h++;

else

time_1h=0;
time_5h++;

if(time_5h==5)

time_5h=0;
P1.1=1;


追问

谢谢。。不过我问的是数电里面的。不是单片机呀。。。

C++ 库boost里使用定时器计时

在程序里常常需要使用计时的动作,并且计时有三种形式,一种是系统日历的时钟,也叫做系统时间(wall clock time, elapsed time), 是指一段程序从运行到终止,系统时钟走过的时间。一般来说,系统时间都是要大于CPU时间的。通常这类时间可以由系统提供,在C++/Windows中,可以由<time.h>提供。注意得到的时间精度是和系统有关系的。

第二个是进程运行CPU的时间,执行调用进程的用户指令所花费的CPU时间。

第三个是系统调用进程的时间。

在boost定时器类里定义如下:

  struct cpu_times
  {
    nanosecond_type wall;
    nanosecond_type user;
    nanosecond_type system;

    void clear() { wall = user = system = 0; }
  };

按boost官方文档的说法,wall指的是程序运行的真实时间,user指的是用户CPU时间,system指系统CPU时间。其中,真实时间易受其它程序运行干扰,是不稳定的。如果是衡量算法运行时间,更好的度量是user和system之和。从变量类型可以看出,所以的时间单位均为纳秒(ns)。
 

下面来设计一个例子,计算系统时间每过5秒就输出一个字符串,可以实现如下:

void CTestTimer::OneSecond(void)
{
	static boost::timer::auto_cpu_timer t;

	auto nanoseconds = boost::chron

以上是关于定时器里如何再累加计时的主要内容,如果未能解决你的问题,请参考以下文章

如何保存计时器中的时间,然后再继续?

三菱PLC中,如何把计时器的时间传送到寄存器里 就是把C0中的数据存入D0中 急急急急

三菱PLC中,如何把计时器的时间传送到寄存器里 就是把C0中的数据存入D0中 急急急急

scratch3.0里如何在舞台区显示计时器

如何在VC6.0里实现多个计时器的同时运行?

怎么在android里显示一个计时器