\section{module TIMER0}

Auteur: Santiago Gonzalez

Courrier: santigoro en gmail.com

Voici les fonctions pour travailler avec le TIMER0 des PIC16F87X.

\subsection{timer0\_init}
Initialise TIMER0 avec l'horloge interne (mode timer) ou externe (mode compteur).

void timer0\_init(unsigned char intern\_extern);

intern\_extern Établit si on utilise une horloge interne ou une horloge/stímuli externe (modo compteur).\\
TIMER\_INTERN :Utilise l'horloge interne. \\
COUNTER\_EXTERN :Utilise l'horloge/stimuli externe (mode compteur)

timer0\_init(TIMER\_INTERN);

Met à 0 le compteur du timer0 y efface le drapeau (flag) des interruptions. Le compteur s'incrémente à chaque cycle d'instructions (Freq.Osc. / 4) si on n'utilise pas le pré-diviseur (prescaler.)
\subsection{timer0\_set\_edge}
Indique si l'incrément du compteur se produit sur le front montant ou descendant (mode compteur).

void timer0\_set\_edge(unsigned char set\_risfal);

Met à 0 le compteur du timer0 y efface le drapeau (flag) des interruptions Le compteur s'incrémente sur le front montant ou descendant présent sur la broche (pin) RA4 si on n'utilise pas le pré-diviseur (prescaler.)

set\_risfal Établit si l'incrément du compteur se produit sur le front montant ou descendant

Les options possibles sont :

  RIS\_EDGE
  FAL\_EDGE

Où RIS\_EDGE indique l'incrément du compteur sur front montant (rising) et FAL\_EDGE sur front descendant (falling).

timer0\_set\_edge(FAL\_EDGE);

\subsection{timer0\_set\_prescaler}
Assigne le pré-diviseur (prescaler) du timer0 , ceci annule l'usage du prédiviseur (prescaler) du chien de garde (watchdog) et établit la valeur du pré-diviseur (prescaler.)

void timer0\_set\_prescaler(unsigned char set\_presc);

set\_presc Établit la valeur du pré-diviseur (prescaler.)

Les options possibles sont :

// Fréquence du cycle d'instructions \\
PRESC\_DIV\_2 // (FOSC/4) del PIC divisé par 2 \\
PRESC\_DIV\_4 // (FOSC/4) del PIC divisé par 4 \\
PRESC\_DIV\_8 \\
PRESC\_DIV\_16 \\
PRESC\_DIV\_32 \\
PRESC\_DIV\_64 \\
PRESC\_DIV\_128 \\
PRESC\_DIV\_256 \\ 
PRESC\_OFF // assigné au chien de garde (watchdog)

N'importe quelle opération d'écriture dans le registre TMR0 met automatiquement  à 0 le compteur du pré-diviseur (prescaler), bien qu'il garde sa configuration.
\subsection{timer0\_write}
Écrit la valeur du compteur TMR0. \\
void timer0\_write(unsigned char set\_count); \\
set\_count Écrit la valeur du compteur TMR0.
\subsection{timer0\_read}
Lit la valeur du compteur TMR0. \\
\#define timer0\_read() TMR0
\subsection{Exemple module TIMER0}
Pour compiler tu as besoin des commandes suivantes 

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

ej\_timer0.c
\verbatiminput{source/ej_timer0.c}