\section{module interruption}
Ce module génère les fonctions nécessaires pour travailler avec les interruptions
\#include <interrupt.h>
\subsection{\_ISR\_MAIN}
\_ISR\_MAIN Définit la fonction interruption principal, cette fonction s'exécutera quand arrivera n'importe quelle  interruption.
On peut choisir n'importe quel nom pour la fonction interruption principal., on l'utilise ainsi :
\verbatiminput{source/interruption1.c}

\subsection{ISR\_MAIN}
ISR\_MAIN Definit la fonction/code interruption principal.
Cette fonction/code s'exécutera quand arrivera n'importe quelle interruption.

On peut choisir n'importe quel nom pour la fonction interruption principal., on l'utilise ainsi :
\verbatiminput{source/interruption2.c}

\subsection{enable\_int\_global}
Autorise globalement toutes les interruptions

void enable\_int\_global(void);

exemple:
enable\_int\_global();
\subsection{disable\_int\_global}
Inhibe globalmente toutes les interruptions

void disable\_int\_global(void);

exemple:
disable\_int\_global();
\subsection{interruption Externe}
Les fonctions pour travailler avec l'interruption externe (RB0) sont :
\subsubsection{enable\_int\_ext}
Autorise l'interruption externe

\#define      H\_TO\_L        0

\#define      L\_TO\_H        1

void enable\_int\_ext(BYTE flanco);

exemple:
enable\_int\_global(L\_TO\_H);

H\_TO\_L indique une interruption activée sur front descendant

L\_TO\_H indique une interruption activée  sur front montant
\subsubsection{disable\_int\_ext}
Inhibe l'interruption externe

void disable\_int\_ext(void);

En inhibant l'interruption on ne modifie pas l'autorisation de l'interruption globale
\subsubsection{int\_ext\_flag}
Retourne l'état actuel du drapeau (flag) indicateur de l'interruption externe

BYTE int\_ext\_flag(void);

L'usage de cette fonction ne modifie pas le drapeau (flag)
\subsubsection{int\_ext\_free\_flag}
Remise à zéro du drapeau (flag) indicateur d'interruption externe

void int\_ext\_free\_flag(void);

L'usage de cette fonction modifie le drapeau (flag), le mettant à 0

\subsection{interruption TIMER0}
Les fonctions pour travailler avec l'interruption par débordement du TIMER0 sont :
\subsubsection{enable\_int\_timer0}
autorise l'interruption par débordement du TIMER0

void enable\_int\_timer0(void);

Pour que cette interruption soit autorisé il faut aussi activer l'interruption globale
\subsubsection{disable\_int\_timer0}
inhibe l'interruption par desbordement du TIMER0

void disable\_int\_timer0(void);

En inhibant l'interruption on ne modifie pas l'autorisation de l'interruption globale
\subsubsection{int\_timer0\_flag}
Retourne l 'état actuel du drapeau (flag) indicateur de l'interruption par desbordement du TIMER0

BYTE int\_timer0\_flag(void);

L'usage de cette fonction ne modifie pas le drapeau (flag)
\subsubsection{int\_timer0\_free\_flag}
Remise à zéro du drapeau (flag) indicateur de l'interruption par débordement du TIMER0

void int\_timer0\_free\_flag(void);

L'usage de cette fonction modifie le drapeau (flag), le mettant à 0

\subsection{interruption RB4 à RB7}
Les fonctions pour travailler avec l'interruption par changement d'état des broches (pins) RB4 a RB7 sont:
\subsubsection{enable\_int\_rb4to7}
autorise l'interruption par changement d'état des broches (pins) de RB4 à RB7

void enable\_int\_rb4to7(void);

Pour que cette interruption soit autorisée il faut aussi activer l'interruption globale
\subsubsection{disable\_int\_rb4to7}
inhibe  l'interruption par changement d'état des broches (pins) de Rb4 à RB7

void disable\_int\_rb4to7(void);

En inhibant l'interruption on ne modifie pas l'autorisation de l'interruption globale
\subsubsection{int\_rb4to7\_flag}
Retourne l 'état actuel du drapeau (flag) indicateur de l'interruption par changement d'état des broches (pins) de RB4 à RB7

BYTE int\_rb4to7\_flag(void);

L'usage de cette fonction ne modifie pas le drapeau (flag)
\subsubsection{int\_rb4to7\_free\_flag}
Remise à zéro du drapeau (flag) indicateur de l'interruption par changement d'état des broches (pins) de RB4 à RB7

void int\_rb4to7\_free\_flag(void);

L'usage de cette fonction modifie le drapeau (flag), le mettant à 0

\subsection{interruption Rx UART}
Les fonctions pour travailler avec l'interruption par réception de caractère dans l 'UART sont :
\subsubsection{enable\_int\_uart}
autorise l'interruption par réception de caractère dans l'UART

void enable\_int\_uart(void);

Pour que cette interruption soit autorisée  il faut aussi activer l'interruption globale
\subsubsection{disable\_int\_uart}
inhibe l'interruption par réception de caractère dans l'UART

void disable\_int\_uart(void);

En inhibant l'interruption on ne modifie pas l'autorisation de l'interruption globale
\subsubsection{int\_uart\_flag}
Retourne l 'état actuel du drapeau (flag) indicateur de l'interruption par réception de caractère dans l 'UART

BYTE int\_uart\_flag(void);

L'usage de cette fonction ne modifie pas le drapeau (flag), en plus on ne peut pas.
\subsubsection{int\_uart\_free\_flag}
Cette fonction n'existe pas. 
Le drapeau (flag) se remettra à zéro lors de la lecture avec la fonction uart\_getc du caractère entrant, cette fonction doit être placé à l'intérieur de  la fonction interruption sinon le drapeau (flag) ne se remettra jamais à 0 et on ne sortira jamais de la fonction interruption, 
car la fonction interruption sera invoqué jusqu'à la fin des temps.

\subsection{interruption ADC}
Les fonctions pour travailler avec l'interruption qui donne la fin de la conversion analogique numérique sont :
\subsubsection{enable\_int\_adc}
autorise l'interruption de fin de conversion analogique numérique 

void enable\_int\_adc(void);

Pour que cette interruption soit autorisée  il faut aussi activer l'interruption globale
\subsubsection{disable\_int\_adc}
inhibe l'interruption de fin de conversion analogique numérique

void disable\_int\_adc(void);

En inhibant l'interruption on ne modifie pas l'autorisation de l'interruption globale
\subsubsection{int\_adc\_flag}
Retourne l 'état actuel du drapeau (flag) indicateur de l'interruption de fin de conversion analogique numérique

BYTE int\_adc\_flag(void);

L'usage de cette fonction ne modifie pas le drapeau (flag).

\subsection{interruption Comparateur}
Les fonctions pour travailler avec l'interruption de fin de comparaison sont:
\subsubsection{enable\_int\_comp}
autorise l'interruption de fin de comparaison

void enable\_int\_comp(void);

Pour que cette interruption soit autorisée  il faut aussi activer l'interruption globale
\subsubsection{disable\_int\_comp}
inhibe l'interruption de fin de comparaison

void disable\_int\_comp(void);

En inhibant l'interruption on ne modifie pas l'autorisation de l'interruption globale
\subsubsection{int\_comp\_flag}
Retourne l 'état actuel du drapeau (flag) indicateur de l'interruption de fin de comparaison

BYTE int\_comp\_flag(void);

L'usage de cette fonction ne modifie pas le drapeau (flag).

\subsection{Exemple du module Interruption Externe}
Pour compiler tu as besoin des commandes suivantes 

Exemple de compilation : ./compila.sh ej\_intext 16f877a

ej\_intext.c
\verbatiminput{source/ej_intext.c}