| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 
 |  
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#define IRQ_11 0x73		//----N° de l'I.T. IRQ_11
 
int CptInterrupt=0,FinBoucleInfini=0,AncMaskItMaitre=0,
AncMaskItEsclave=0;
 
void interrupt ( *AncVectIt)();
 
void interrupt Irq11()
  {
  CptInterrupt++;
  //AncVectIt();
  outport(0xA0,0x20);           //---Marque la fin de l'interruption Esclave
  outport(0x20,0x20);           //---Marque la fin de l'interruption Maitre
  }
 
main()
  {
  AncVectIt = getvect(IRQ_11);  	//--Valeur de l'ancien vecteur d'I.T
  printf("la valeur de l'ancien vecteur est %d\n",AncVectIt);
  AncMaskItEsclave 	= inport(0xA1);
 
  disable();	         //----Inhibe tous les IRQ
  outport(0xA1,247);      //---Permet de générer un masque sur l'esclave activant seulement l'Irq 11 (on met un 0 sur le bit correspondant)
  setvect(IRQ_11,Irq11);
  enable();
 
while (CptInterrupt < 20 && FinBoucleInfini<6000)   //---Attente d'un signal d'I.T.
{printf("Le nombre d'I.T. Irq 11 est : %d\n",CptInterrupt); FinBoucleInfini++;}
 
//--------------Initialisation du vecteur d'I.T. a son ancienne valeur----------//
  disable();		 //----Inhibe tous les IRQ
  setvect(IRQ_11,AncVectIt);
  enable();
//------------------------------------------------------------------------------//
 
  outport(0xA1,AncMaskItEsclave);
  printf("la valeur de l'ancien masque esclave est %d\n",AncMaskItEsclave);
 
  NvVectIt = getvect(IRQ_11);  //--Valeur du nouveau vecteur d'I.T
  printf("la valeur du nouveau vecteur est %d\n",NvVectIt);
 
 
  return 0;
  } | 
Partager