当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

利用中断实现每500毫秒接收一次数据

     //调用DOS下的中断。
    //DOS的时钟中断 int 21H  AH=0x1C  每秒产生18.2次中断
    //该程序时间间隔为550毫秒  可以由count的值算出。

    #include <stdio.h>
    #include <dos.h>
    #include <conio.h>

    #define INTR 0X1C    //0x1c为时钟中断

    #ifdef __cplusplus
      #define __CPPARGS ...
    #else
      #define __CPPARGS
    #endif

    void interrupt ( *oldhandler)(__CPPARGS);

    int count=0;
    int a=0,b=0;
    strUCt time t;

    void interrupt handler(__CPPARGS)  //  执行DOS中断时调用的程序
    {
        count++;

        if(count==10)
        {    gettime(&t);
             b=t.ti_hund;
             printf("(2)   %d\n",b);
             if(b<a)printf("Delay %d  ms",((100-a)+b)*10);
             else printf("Delay %d  ms",(b-a)*10);}
    }

    int main(void)
    {

        oldhandler = getvect(INTR); //取得原来的中断向量

        setvect(INTR, handler);     //设置现在的中断向量
        gettime(&t);a=t.ti_hund;
        printf("(1)   %d\n",a);

        while (count < 11);         //循环等待。执行DOS的时钟中断

        setvect(INTR, oldhandler);  //执行完毕,恢复原来的中断向量

      return 0;
    }

相关内容
赞助商链接