程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 利用中斷實現每500毫秒接收一次數據

利用中斷實現每500毫秒接收一次數據

編輯:C語言基礎知識
 //調用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 ",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 ",a);     while (count < 11);         //循環等待。執行DOS的時鐘中斷     setvect(INTR, oldhandler);  //執行完畢,恢復原來的中斷向量     return 0;
  }
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved