定时器里如何再累加计时
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中 急急急急