龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

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

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
//调用DOS下的中断。 //DOS的时钟中断 int 21H AH=0x1C 每秒产生18.2次中断 //该程序时间间隔为550毫秒 可以由count的值算出。 #include #include #include #define INTR 0X1C //0x1c为时钟中断 #ifdef __cplusplu

//调用DOS下的中断。

  //DOS的时钟中断 int 21H AH=0x1C 每秒产生18.2次中断

  //该程序时间间隔为550毫秒 可以由count的值算出。

#include

  #include

  #include

#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

",b);

   if(b

   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

",a);

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

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

return 0;

  }

  

精彩图集

赞助商链接