Vous êtes sur la page 1sur 6

Compte rendu TP INFO INDUS N°3

Nom & prénom : El marjany Ikrame


Dans ce TP on va s’intéresser à la notion du timer , on va voir les deux cas de
programmation du timer , en fonction temporisation et compteur.
Pour cela le 1er exercice consiste à obtenir un temps mort de 750us et dans le
2eme exercice on va Proposer une configuration du Timer0 avec le "Prescaler”
qui permet d’obtenir une base de temps d’une seconde.
Et le dernier exercice présentera la notion compteur.

Exercice 1 :
L'exercice consiste à :
 Obtenir un temps mort de 750μs
 A partir du schéma ISIS TP2_Timer.DSN, voir ci-dessous. Vérifier à
l'aide de l'oscilloscope le temps mort. Dresser la liste des variables
utilisées à partir du schéma.
Pour cela, tout d’abord il faut bien détailler les instructions quand procédera
Le TIMER : faut bien préciser les registres qu’on doit utiliser.
 Les différents registres impliqués dans la configuration du timer0 sont :
-TMR0 : le registre donnée 8bits qui contient la valeur du compteur
-OPTION_REG : configure le module en compteur ou en timer
-INTCON : contient le drapeau de débordement(T0IF)
Il faut déterminer la valeur qui sera attribuer au TIMER pour cela, on utilise la
méthode de tales après avoir tracer la courbe et définir la valeur du timer qu’on
veut calculer (voir préparation) on trouve qui le TMR0 <---- 68
#define V RA0
La boucle WHILE
V=0
Init();
While (1)
{
V=1-V
Temps_mort_750us ();
}
La fonction d’initialisation
TRISA =0xFE
OPTION_REG=0x01
CMCON= 0x07
PCON =0x08
Le programme

Figure 1 : programmation en c pour le temps mort de 750us


Figure 2 : schéma ISIS pour la simulation
Exercice 2
Cet exercice consiste à :
Créer une configuration du Timer0 avec le "Prescaler" permettant d'obtenir une
temporisation d’une seconde, cette temporisation représente le temps entre
allumer et éteindre la LED (clignotement de la LED)

Développement
Pour avoir une base de temps d’une seconde, tout d’abord il faut choisir
l’oscillateur 4 MHz avec un diviseur de fréquence à 256 on aura une période de
65ms (256*256*1microsecondes) par contre si on choisit 48KHz sans diviseur
dt= 1/12000s. T=256/12000=21,3ms donc, dans 1s on environ 47 fois 21ms
Si on choisit un diviseur de fréquence de 64,
On aura=64*256/12000=1,365S
Le calcul de la valeur de TMR0 nous donne TMR0<---68

Configuration des PORTS : d’après le schéma sur ISIS (figure 2) on peut


regrouper les infos suivantes
#define LED RA0
Fonction d’initialisation
TRISA = 0xFE
OPTION_REG= 0x05
CMCON =0x07
PCON =0xF7
La fonction qui va attendre le débordement du TMR0 sera :
Void tempo_1s (void )
{
TMR0=68 ;
T0IF=0 ;
While (T0IF==0) ;
}
Le programme en c :
Figure 3 : code source du clignotement de la LED

EXERCICE 3 :
Notion TIMER compteur
Cet exercice consiste à afficher sur un écran LCD le nombre d’appui qui sera
réaliser à l’aide de la fonction compteur du module timer0 .
À l’aide du schéma ISIS on dresse les variables utiliser ,
Configuration des PORTS
#define RS RA2
#define E. RA3
TRISB=0x00 toutes les broches en sortie
TRISA=0XF3 RA2, RA3 en sortie, RA4 en entrée
OPTION_REG= 0XFF
CMCON =0x07
Pour le registre OPTION_REG ,
OPTION_REG &=0xF1 masque pour forcer le bit PSA à 0 et PS<2:1>
OPTION_REG &=0x01 pour forcer le bit PSA0 à 1
La fonction MAIN
Void main (void)
{
TMR0=0;
Init();
Init lcd();
Ecrire_lcd_chaine(“TMR0=”);
While(1)
{
Curseur_xy(2,2);
Ecrirenombre(TMR0);
}
}