Modification du traitant d'interruption de l'horloge

Description

Ce petit programme illustre comment modifer le traitant d'interrution de l'horloge en le substituant par une fonction utilisateur.
Mais on peut modifier d'autre traitant que celui de l'horloge en spécifiant le N° d'interruption à modifier.

Source / Exemple :


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

#define INT 0X08

void interrupt ( *ancien_traitant)(...);

int count=1;
int s=0;
int m=0;
int h=0;
void interrupt traitant(...)
{
   count++;
      if(count==18)
      {
       s++;
       if(s==60)
       {
	m++;
	if(m==60)
	{
	 h++;
	 m=0;
	}
	s=0;
	gotoxy(35,12);
	clreol();
       }
       count=1;
      }
   /* Appel de l'ancien traitant*/
   ancien_traitant();
}

int main(void)
{

   clrscr();
   /* Sauve l'ancien traitant */
   ancien_traitant = getvect(INT);

   /* installe le nouveau traitant d'interruption */
   setvect(INT, traitant);
   _setcursortype(_NOCURSOR);
   gotoxy(18,24);
   cout<<"Appuyez sur une touche pour sortir du programme";
   while (!kbhit())
   {
      gotoxy(35,12);
      cout<<h<<":"<<m<<":"<<s;
   }
   /* Restaure l'ancien traitant */
   setvect(INT, ancien_traitant);
   return 0;
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.