Vous êtes sur la page 1sur 1

TD

On propose de gérer le trafic des véhicules dans un croisement de deux voies principales.
Un feu de circulation est composé de trois voyants (vert, oranger et rouge) pour chaque voie, noté Vi, Oi et
Ri ; (i=1 ou 2 selon la voie considérée).
Le feu piéton est désigné par Vp et Rp associés respectivement au feu vert et rouge.
Le cycle normal de fonctionnement est le suivant sans considérer le passage des piétons:

Cycle Feux actifs Temps alloué (sec)


1 V1-R2-Rp 30
2 O1-R2-Rp 5
3 R1-V2-Rp 30
4 R1-O2-Rp 5
Le cycle reprend

Les voyants sont commandés à travers les lignes du PORTC du PIC18F4520 conformément au tableau 1:

RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 Cycle Code en hexa
Rp Vp R2 O2 V2 R1 O1 V1
1
2
3
4
Tableau 1
1. Compléter le tableau 1.
2. Développer la fonction main () permettant de générer cette séquence de fonctionnement. Vous pouvez
utiliser des instruction de temporisation __delay_ms( ).
3. Les piétons peuvent demander l’autorisation de traverser les deux voies suite à la commande d’un
bouton poussoir. Une impulsion permet de générer un front descendant sur la broche INT2 (RB2).
Développer en langage C et pour PIC18F4520 :
- Une fonction config_int() permettant de configurer l’interruption INT2 ;
- Un programme d’interruption associé à INT2 permettant de commander les voyants rouges R1 et
R2 des deux voies ainsi que le vert piéton Vp durant 15s et reprendre ensuite le cycle normal de
fonctionnement.
Le fonctionnement souhaité est donné par le tableau suivant suite à la demande du piéton:

Cycle Feux actif Temps alloué (sec)


1 O1-O2-Rp 10
2 R1-R2-Vp 10
3 R1-R2-(Vp clignotant à une fréquence 2Hz) 5
4 R1-R2-Rp 5
Le cycle normal reprend

4. Donner le programme complet.

Vous aimerez peut-être aussi