点击这里给我发消息 点击这里给我发消息

c语言中时间陷阱的实现

添加时间:2013-12-7
    相关阅读: 程序 C语言

    时间陷阱.它能是主程序的运行和对事件的处理异步进行.通过设置时间陷阱.可以在规定的时间间隔到达后自动执行某个子程序.子程序运行结束后又回到主程序的断点处继续执行.basic语言提供了有关时间陷阱的语句.可以直接调用.但C语言没有这样的功能,为了能实现上述功能,这里给出了几个子函数以帮助实现.

    #include<dos.h>

    #define Sizeprogram 375
    void interrupt (*oldtimer)();
    void interrupt newtimer();
    static strUCt SREGS seg;
    unsigned intsp,intss;
    unsigned myss,stack;
    unsigned vseg;
    int running=0;
    int m1,m2,m3=0;
    int (*sub_ptr)();
    void on_timer();
    void timer_on();
    void timer_off();

    void on_timer(t,pp);
    int t;
    int (*pp)();
    {
    sub_ptr=pp;
    m1=t;
    segread(&seg);
    stack=(Sizeprogram-(seg.ds-seg.cs))*16-300;
    myss=_SS;
    oldtimer=getvect(0x1c);
    }

    void timer_on()
    {
    m2=0;
    m3=1;
    setvect(0x1c,newtimer);
    }
    void timer_off()
    {
    m3=0;
    setvect(0x1c,oldtimer);
    }
    void interrupt newtimer()
    {
    (*oldtimer)();
    if(running==0)
    running=1;
    disable();
    intsp=_SP;
    intss=_SS;
    _SP=stack;
    _SS=myss;
    enable();
    if(m3==1){
    if(m2==m1*18){
    m2=0;
    (*sb_ptr)();
    }
    m2+=1;
    }
    disable();
    _SP=intsp;
    _SS=intss;
    enable();
    running=0;
    }
    }

    #include<dos.h>
    #define TRUE 1
    void ptr();
    main()
    {
    char ch;
    char *p:
    p=(char *)ptr;
    on_timer(t,p);
    while(TRUE){
    ch=getch();
    switch(ch){
    case ''0'': timer_off();break;
    case ''1'': timer_on();break;
    case ''2'': timer_off();brea;
    default: printf("%c",ch);
    }
    }
    }

    void ptr()
    {
    union REGS in,out;
    in.h.al=''A'';
    in.h.ah=14;
    int86(0x10,&in,&out);
    }

相关c语言中时间陷阱的实现

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册