精华内容
下载资源
问答
  • C语言的一个模拟定时器程序

    千次阅读 2019-05-08 11:09:41
    简单的C语言模拟定时器,循环时间+绝对时间,根据《精通UNIX下C语言编程与项目实践》书上的例子搬过来的,挺好的,可能以后有用 #include<stdio.h> #include<time.h> #define MAXTIMER 20 typedef ...

    简单的C语言模拟定时器,循环时间+绝对时间,根据《精通UNIX下C语言编程与项目实践》书上的例子搬过来的,挺好的,可能以后有用

    #include<stdio.h>
    #include<time.h>
    #define MAXTIMER 20
    typedef struct stuSimTimer{
        char szName[20];//定时器名称
        int nInterval;//定时间隔,值为0时取消定时 
        time_t nLast;//上次定时的系统时间 
        //int nRemain;//剩余定时时间 
        int (*pfunc)(char *); //回调函数指针 
    }SIMTIMER;
    //回调函数
    int func1(char *p){
        
        printf("----%s----\n",p);
        return 0;
    }

    SIMTIMER sTimer[MAXTIMER] = 
    {
        //定时器TIME1  定时间隔10, 
        {"TIME1",2,0,func1},
        {"TIME2",4,0,func1}
    };

    int nTopTimer = 2;

    int main(){
        
        int i;
        //循环定时 
        while(1){
            //sleep(1);
            //遍历模拟定时器数组 
            for(i = 0;i < nTopTimer;i++){
                //绝对时间 判断模拟定时器是否定时到达 
                if(time(NULL) - sTimer[i].nLast >= sTimer[i].nInterval){
                    //执行模拟定时器回调函数 
                    sTimer[i].pfunc(sTimer[i].szName);
                    //重置模拟定时器 
                    sTimer[i].nLast = time(NULL);
                }    
            }
            
            
        }
        
        
        return 0;
    }

    展开全文
  • C语言定时器

    千次阅读 2016-11-27 11:18:10
    环境: ubuntu16.04 LTS i686 ...所以我们需要写一个定时器程序。POSIX.1-2001提供了gettimeofday()函数可以用来获得系统相对于Epoch(1970-01-01 00:00:00 UTC) 的时间(微秒),POSIX.1-2008废弃了gettimeofday(),建

    环境:
    ubuntu16.04 LTS i686
    gcc5.4.0

    我们在写C程序的时候往往需要衡量一段代码的执行时间,方便程序的优化。所以我们需要写一个定时器程序。POSIX.1-2001提供了gettimeofday()函数可以用来获得系统相对于Epoch(1970-01-01 00:00:00 UTC) 的时间(微秒),POSIX.1-2008废弃了gettimeofday(),建议大家用clock_gettime()(纳秒)。我认为之所以废弃是因为clock_gettime()不仅提高了精度,而且提供了更加丰富的时间获取方法,尤其是可以避免settimeofday()或者clock_settime()改变系统时间。下面是我实现的定时器供参考。

    timer.h

    double xu_wallclock(void);
    
    #define MAX_RUNTIME -10*365*365*24*60*60.0 /** Timing will fail if execution takes longer than 10 years */
    #define timer_clear(tmr) (tmr = 0.0)
    #define timer_start(tmr) do {if(tmr > MAX_RUNTIME){tmr -= xu_wallclock();}} while(0)
    #define timer_stop(tmr) do {if(tmr < MAX_RUNTIME){tmr += xu_wallclock();}} while(0)
    ~                                                                       

    timer.c

    #include <stddef.h>
    #include <time.h>
    #include <sys/time.h>
    
    double xu_wallclock1(void)
    {
    #ifdef __GNUC__
        struct timeval ctime;
    
        gettimeofday(&ctime, NULL);
    
        return (1.0e+6 * (double)ctime.tv_sec + (double)ctime.tv_usec);
    #else
        return (double)time(NULL);
    #endif
    }
    
    double xu_wallclock(void)
    {
    #ifdef __GNUC__
        struct timespec ctime;
        int error;
    
        error = clock_gettime(CLOCK_MONOTONIC_RAW, &ctime);
    
        return (1.0e+9 * (double)ctime.tv_sec + (double)ctime.tv_nsec);
    #else
        return (double)time(NULL);
    #endif
    }
    

    try.c

    #include <stdio.h>
    #include "timer.h"
    
    int main()
    {
        double timer;
        int t;
    
        t = 0;
        timer = 0.0;
        timer_start(timer);
        while(t < 1000)
        {
            t++;
        }
        timer_stop(timer);
        printf("timeflash:%.2lfns\n", timer);
    }
    

    结果:
    这里写图片描述

    展开全文
  • 如何用c 语言写一个 定时器

    千次阅读 2020-10-23 21:39:14
    代码抽象出一个定时器函数 void timer(long time) void timer(long time){ clock_t start; long count = 1; start = clock(); while(1) { if((clock() - start) != (time*CLOCKS_PER_SEC)) { //时间...

    1.代码分析

    在这里插入图片描述

    2.代码

    #include <stdio.h>
    #include <time.h>
    #include <conio.h>
    
    #ifndef CLOCKS_PER_SEC
    #define CLOCKS_PER_SEC 1000
    #endif
    
    int main( void )
    {
    	clock_t start;
    	long count = 1;
    	start = clock();
    	while(1)
    	{
    		if((clock() - start) == CLOCKS_PER_SEC)
    		{
    			printf("%ld\n",count++);
    			start = clock();
    			//break;
    		}
    	}
    	getch();
    }
    

    3. 代码抽象出一个定时器函数 void timer(long time)

    void timer(long time){
    
        clock_t start;
    	long count = 1;
    	start = clock();
    	while(1)
    	{
    		if((clock() - start) != (time*CLOCKS_PER_SEC))
    		{
    			//时间没有到,啥也不做,空循环
    		}else {
                //时间到了退出循环
                // printf("%s","hello");
                break;
            }
            
    	}
    }
    

    完整代码

    #include <stdio.h>
    #include <time.h>
    #include <conio.h>
    
    #ifndef CLOCKS_PER_SEC
    #define CLOCKS_PER_SEC 1000
    #endif
    /**
     * time 的单位为s
     */
    void timer(long time){
    
        clock_t start;
    	long count = 1;
    	start = clock();
    	while(1)
    	{
    		if((clock() - start) != (time*CLOCKS_PER_SEC))
    		{
    			//时间没有到,啥也不做,空循环
    		}else {
                //时间到了退出循环
                // printf("%s","hello");
                break;
            }
            
    	}
    }
    int main( void )
    {
       
        for(int i=0;i<10;i++){
            timer(1);
            printf("%d\n",i);
        }
    	getch();
    }
    

    在这里插入图片描述

    展开全文
  • C语言实现定时器

    千次阅读 2013-07-10 15:09:28
    C语言也可以实现定时器的功能,例如下面代码: #include #include #include #ifndef CLOCKS_PER_SEC #define CLOCKS_PER_SEC 1000 #endif void main( void ) { clock_t start; long count = 1; start = clo

    在实际开发过程中,很多事情需要用到定时器。C语言也可以实现定时器的功能,例如下面代码:

    #include <stdio.h>
    #include <time.h>
    #include <conio.h>
    
    #ifndef CLOCKS_PER_SEC
    #define CLOCKS_PER_SEC 1000
    #endif
    
    void main( void )
    {
    	clock_t start;
    	long count = 1;
    	start = clock();
    	while(1)
    	{
    		if((clock() - start) == CLOCKS_PER_SEC)
    		{
    			printf("%ld\n",count++);
    			start = clock();
    			//break;
    		}
    	}
    	getch();
    }

    以上代码就是每秒钟打印一个数字,从1开始到∞,截图:



    这是一个很简单的程序,只是给大家提供一种思路,不足之处,请大家多多指正!

    展开全文
  • 52系列单片机定时器计数器2使用 ,用Keil编译通过
  • C语言-windows下定时器操作

    千次阅读 2013-06-17 21:48:32
    结合定时器的异步程序调用可以允许回调函数在任何定时器被激发的时候执行。  通过调用CreateWaitableTimer()可以创建一个定时器,此函数返回一个指向内核对象的句柄。若定时器已经存在,你可以通过使用...
  • c语言编写简单的计时器

    千次阅读 2020-05-10 17:59:43
    #include<stdio.h> #include<conio.h> #include<Windows.h> int main(){ int s=0; int min=0; int hour=0; while(!_kbhit()){ if(s%60==0 && s!=0){ s%=60;...
  • 单片机课程设计实现的定时器程序编写,能够用于51或52单片机,引脚一一对应
  • linux下的C语言开发(定时器

    万次阅读 多人点赞 2012-01-17 20:32:14
    【 声明:版权所有,欢迎转载,请勿用于商业用途。...  定时器是我们需要经常处理的一种...这里的定时器就相当于系统每隔一段时间给进程发一个定时信号,我们所要做的就是定义一个信号处理函数。 #include #include
  • c语言制作定时器

    2020-12-31 10:47:53
    c语言制作定时器库1. 大致功能介绍2. API库介绍3. 一个例子4. 库文件源码注意事项 1. 大致功能介绍 实现任务列表,定时器会间隔一段时间遍历列表发现要执行的任务 任务列表中的所有任务并行执行 每个任务都可以有...
  • (2)定时器工作模式 定时器/计数器的结构 TMOD:选择定时器/计数器T0、T1的工作模式和工作方式。 TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。 单片机复位时,两个寄存器的所有位都被清0。 ...
  • linux下的C语言开发 定时器
  • 名称:定时器控制单只 LED 说明:LED 在定时器的中断例程控制下不断闪烁。
  • 定时器控制led闪烁、单片机学习资料、嵌入式学习、C代码
  • c语言中计数器(定时器程序

    千次阅读 2020-07-30 13:50:26
    可以看到,只要count数不重新初始化(启动)的话,计数器(定时器)只执行了一次,这样看起来很简洁。(不需要flag来保证,只执行一次。) int count = 1000; int flag = 1; while(1) { if(count) //计数器 { count...
  • 实现程序的自动退出, 当程序达到某个设定的时间后程序自动退出;     一、使用计时器  计时器的使用主要分为创建、处理、销毁三个部分。   ①.  创建: 创建一个计时器并设定其定计时器的任务周期, 例如每5秒向...
  • C语言实现任务调度与定时器

    千次阅读 2020-02-22 00:31:09
    基本功能就是实现定时器,时间到后从定时队列中取出,然后完成指定的任务。 1. schedule.c代码(自己添加了main函数,用来调试) /* * Layer Two Tunnelling Protocol Daemon * Copyright (C) 1998 Adtran, Inc. * ...
  • 这是一个运用51单片机写的交通灯的例子,可以显示时间,红黄蓝等,第一个按键是左右路通行20S,第二个按键是上下路通行20S,第一个按键是所有路都是红灯20S。这是从时钟该来的程序,与上一个始终的程序大体相同。
  • 利用定时/计数器T0从P1.0输出周期为1s 的方波,让发光二极管以1HZ闪烁。 利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期),...
  • 名称:10s 的秒表 说明:首次按键计时开始,再次按键暂停,第三次按键清零。
  • 单片机初学者编写了几个小程序供大家分享 此程序为0-100秒计时器,改变disnum的值可改变计时最终数值
  • //设置定时器0的初始值10ms TL0 = 0xf0; TMOD = 0x01; //定时器0工作方式 TR0 = 1; //启动定时器0 ET0 = 1; //打开定时器0中断 EA = 1; //打开中断允许总控制 } void Timer0() interrupt...
  • 单片机C语言程序设计实训100例大集合

    万次阅读 多人点赞 2018-12-19 16:01:10
    本书基于Keil μVision程序设计平台和Proteus硬件仿真平台,精心编写了100余个8051单片机C语言程序设计案例。完整的资料已经上传到闯客网技术论坛了,关于这个资料已经创建了一个单片机和嵌入式C语言的资料群,用于...
  • c语言编写的时钟程序

    2011-11-13 15:13:36
    自己编写的时钟程序,旨在让大家能够更好的利用单片机cpu资源,看了你就知道了,如何高效率利用定时器中断来实现各种任务。请同学们自行下载和思考。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
  • 基于单片机的定时器设计,基于单片机开发的C语言程序,有定时及时间显示功能
  • C语言C++编写——迷宫游戏

    千次阅读 热门讨论 2018-12-25 15:03:34
    最初用C语言写的,写了一天多写好。后来又改用C++,由于对C++不是很熟悉,改成C++用了三四天才改好。 程序是在VC++6.0中写的,新建一个Win32 Application即可。  最初觉得程序的关键应该是求解迷宫,后来发现求解...
  • c语言编写51单片机中断程序,执行过程是怎样的?

    千次阅读 多人点赞 2017-10-11 09:53:00
    Q:c语言编写51单片机中断程序,执行过程是怎样的?   例如程序:#include&lt;reg52.h&gt; void main(void) { EA=1; //开放总中断 EX0=1; //允许使用外中断 IT0=1; //选择负跳变来触发外中断 P0=0...
  • C语言原本是面向过程的编程语言,而面向过程编程,比较繁琐,代码重用性较低。相对而言,面向对象编程,代码重用性高,同时便于理解,是一种更加先进的编程方法。可喜的是,C语言通过适当组织处理,也可以类似于C++...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,647
精华内容 3,458
关键字:

c语言定时器程序编写

c语言 订阅