利用中断实现每500毫秒接收一次数据
2008-03-08 12:44:08 来源:WEB开发网核心提示: //调用DOS下的中断,//DOS的时钟中断 int 21HAH=0x1C每秒产生18.2次中断//该程序时间间隔为550毫秒可以由count的值算出,利用中断实现每500毫秒接收一次数据,#include <stdio.h>#include <dos.h>#include <conio
//调用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;
}
//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;
}
更多精彩
赞助商链接