100% ont trouvé ce document utile (1 vote)
162 vues7 pages

01 - Magazine PIC INTerruption

Transféré par

teedydeev
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)
162 vues7 pages

01 - Magazine PIC INTerruption

Transféré par

teedydeev
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

Génie Electrique

Bac Technique

THÈME 1 : Évaluation
Sources d’interruption
Évaluation N°2 12 min 2.5 pts
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é.

Figure1

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 ………………..…………….. ;
Intcon  0b10010000 Intcon=0b……………….….. ;
Tant que vrai faire ………………………….……..
Début {
Fin }
Fin }

Évaluation N°3 17 min 4 pts


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).
# 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
}
}
Évaluation N°4 20 min 4.5 pt
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)
1- Compléter le tableau suivant en configurant le registre INTCON :

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

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
}
}
Évaluation N°5 25 min 4.5 pts

Figure 4

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 :

▪ L’extinction du feu vert destiné aux automobilistes et l’allumage du feu jaune invitant les
automobilistes à ralentir durant 5s ;

▪ L’allumage du feu rouge des automobilistes et l’allumage du feu vert durant 20s autorisant le
passage des piétons.

▪ 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