RE:INTERRUPCIONES HADWARE EN C
#include <dos.h>
#include <conio.h>
#define INTR 0x1C /* Temporizador del reloj (BIOS) */
#ifdef __cplusplus /* Ajustar para que funcione en C y en C++ */
#define ARGS ...
#else
#define ARGS void
#endif
void interrupt(*viejo)(ARGS);
int count=0;
/* Esta interrupcion se ejecuta 18.7 veces por segundo */
void interrupt nuevo(ARGS)
{
static float CountRep=0.0f; /* Contador parcial */
CountRep+=0.0534760f; /* Incrementar contador parcial */
if(CountRep>=1) /* Aprox. cada segundo */
{
count++; /* Incrementar contador global */
CountRep=0; /* Resetear contador parcial */
}
viejo(); /* Siempre llamar al vector original */
}
int main(void)
{
viejo=getvect(INTR); /* Guardar el vector de interrupcion original */
setvect(INTR, nuevo); /* Instalar nuestro propio vector */
/****Aqui tu codigo *****/
setvect(INTR,viejo); /* Siempre devolver el vector a su sitio */
printf("Tiempo transcurrido %u segundos\n",count);
return 0;
}
Saludos,
Endos.