100% ont trouvé ce document utile (1 vote)
230 vues5 pages

Évaluations sur les Microcontrôleurs

Transféré par

Hechaye
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
230 vues5 pages

Évaluations sur les Microcontrôleurs

Transféré par

Hechaye
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

THÈME 1: MICROCONTRÔLEURS

ÉVALUATIONS
Séquences 1 : Sources d’interruption
Evaluation n° 1
Cocher les réponses correctes

 Une interruption est un évènement prévisible qui provoque l’arrêt d’un programme en
cours d’exécution pour aller exécuter un autre programme appelé routine.

 Une interruption est un évènement imprévisible qui provoque l’arrêt d’un programme en
cours d’exécution pour aller exécuter un autre programme appelé routine.

 A la fin de la routine d’interruption, le microcontrôleur s’initialise.

 A la fin de la routine d’interruption, le microcontrôleur reprend le programme principal à


l’endroit où il s’est arrêté et continue son exécution.

 Les microcontrôleurs disposent de deux types d’interruption : internes et externes.

 Le nombre de sources d’interruptions dépend du microcontrôleur utilisé.

 Les interruptions internes proviennent des périphériques ouvertes sur le monde extérieur.

 Les interruptions externes proviennent des périphériques ouvertes sur le monde extérieur.

 En MikroC, la routine d’interruption est déclarée en tant que fonction avec le nom
spécifique « Interruption ».

 Le choix de la source d’interruption se fait par l’utilisateur en configurant le registre


INTCON.

 Une interruption externe peut se produire suite à une détection d’un front montant sur la
broche RB0.

 Le registre INTCON est un registre de 16 bits configurable en lecture ou en écriture

 Le registre INTCON dispose de quatre indicateurs (drapeaux).

 Pour autoriser une interruption, il faut attribuer «0 » au bit GIE (bit 7) du registre INTCON.

 Au cours de l’exécution de la routine d’interruption, le GIE est mis à 0.

 A la fin de la routine d’interruption, il faut remettre les indicateurs à 0 pour revenir au


programme principal.

 A la fin de la routine d’interruption, il faut réactiver le GIE pour autoriser d’autres


interruptions.
 On active l’interruption par RB0 si INTCON=0x88.
 On autorise une interruption externe par changement d’état des bits RB4, RB5, RB6
etRB7 si on a INTCON=0x90.

1
Evaluation n° 2
Ecrire un programme en MikroC qui déclenche une interruption sur front montant de RB0.
À chaque impulsion sur le bouton poussoir BP, l’état de la diode LED (D) est inversé.
Algorithme Programme
Définir LED # define LED RA0_bit
Routine de l'interruption …………………………
Début {
Inverser l'état de la led LED=…………..;
Sortir de l'interruption Intcon=0b……………..;
fin }
Fonction principale ………………………..
Début {
TRISA.B00 …………………..;
PORTA0 …………………..;
TRISB.b01 …………………..;
Figure 1 Intcon0b10010000 Intcon=0b……………..;
Tant que vrai faire …………………………..
Début {
Fin }
Fin }

Evaluation n° 3 :
Ecrire un programme en MikroC permettant de signaler l’entrée active pour enclencher une
interruption par RBI :
 D1 clignote si on a une interruption par RBI (action sur BP1) ;
 D2 clignote si on a une interruption par RBI (action sur BP2) ;
 D3 clignote si on a une interruption par RBI (action sur BP3) ;
 D4 clignote si on a une interruption par RBI (action sur BP4).

Figure 2

2
# define D1 RA0_bit
# define D2 RA1_bit
# define D3 RA2_bit
# define D4 RA3_bit
# define BP1 ……………
# define BP2 ……………
# define BP3 ……………
# define BP4 ……………
// Routine interruption
…………………..
{
if (BP1…….)……...…….;delay_ms(500) ; // D1clignote si on appuie sur le bouton BP1
………………. D2=!D2; delay_ms(500) ; // D2 clignote si on appuie sur le bouton BP2
if (BP3==1) ……..……..;delay_ms(500) ; // D3 clignote si on appuie sur le bouton BP3
………………..…………;delay_ms(500) ; // D4 clignote si on appuie sur le bouton BP4
Intcon=0x…………;//Revenir au programme principal et autoriser d’autres interruptions
}
void main()
{
// Configuration des registres
TRISB=0x……..;
TRISA=………..;
…………………..……;// Initialiser le portA à 0
Intcon=0x…………….;// Activer l'interruption externe RBI
Option_reg=0b01111111; // Résistances de rappel à Vcc pour tout le portb activé
// "pull up"
while (1)
{ asm sleep; // Mode veille
}
}

Evaluation n° 4 :
On désire écrire un programme en MikroC permettant d’enclencher deux interruptions :
 Si on actionne le bouton poussoir a on inverse l’état de la diode LED D1 (interruption sur RB0)
 Si on actionne le bouton poussoir b on inverse l’état de la diode LED D2 (interruption sur RB4)

Figure 3

1- Compléter le tableau suivant en configurant le registre INTCON :

GIE EEIE T0IE INTE RBIE T0IF INTF RBIF Valeur INTCON
INTCON
…... 0 0 ….. ….. 0 0 0 0x…..

3
2- Compléter le programme ci-dessous

void main()
{
TRISA.RA0=…..; TRISB.RB7=…..;
TRISB.RB0=…..; TRISB.RB4=…..;
PORTA=0; PORTB=0;
INTCON=0X…..;

while (1)
{
asm sleep; // Mode veille
}
}
…………………………… //Déclarer une fonction d’interruption
{
if ([Link]) // Tester une interruption sur RB0
{
PORTA.RA0=…………………………………;
……………………….; // Remettre l’indicateur à 0
……………………….; // Remettre le bit GIE à 1
}
if (…………………...) // Tester une interruption sur RB4
{
………………………..=!PORTB.RB7;
……………………….; // Remettre l’indicateur à 0
……………………….; // Remettre le bit GIE à 1

}
}

Evaluation n° 5 :
Une voie à trafic dense est équipée d’un feu tricolore pour les automobilistes (V, J et R) et d’un
feu bicolore (RP et VP) pour les piétons et
d’un bouton Bp permettant aux piétons de
prendre momentanément la priorité sur les
utilisateurs de la voie afin de la traverser en
toute sécurité.

En fonctionnement normal, le feu vert des


automobilistes et le feu rouge des piétons
sont allumés en permanence. À tout
moment, un piéton désirant traverser cette
voie, actionne le bouton Bp, ce qui provoque
dans l’ordre :
Figure 4
- l’extinction du feu vert destiné aux automobilistes et l’allumage du feu jaune invitant les
automobilistes à ralentir durant 5 s;
- l’allumage du feu rouge des automobilistes et l’allumage du feu vert durant 20s autorisant le
passage des piétons.

4
Après l’écoulement du temps prévu, le trafic reprend son cours normal (feu vert pour les
automobilistes et feu rouge pour les piétons).
1- Le bouton poussoir Bp est relié à la broche RB0. Justifier le choix de cette broche.

…………………………………………………………………………………………………………

2- Compléter le programme ci-dessous en MikroC.

……………………….// Déclarer une routine d’interruption


…. // Début de la routine d’interruption
PORTC=0b………………. ;delay_ms(…………..) ;
PORTC=0b………………. ;delay_ms(…………..) ;
INTCON.B1=……; // Revenir au programme principal
INTCON.B7=…....; // Autoriser d’autres interruptions
……// Fin de la routine d’interruption
void main () // Déclarer une fonction principale
{
TRISC=0X00 ; TRISB=0xff ; INTCON=0b……..………..; // Configurer les registres à utiliser
PORTC=……. ; // Initialiser les sorties à 0
…………………..//Boucle infinie
PORTC=0b…………….;// Fonctionnement normal des feux tricolore et bicolore
} // Fin du programme

Vous aimerez peut-être aussi