Travaux dirigés
Exercice 1 :
Soit le montage suivant permettant de commander 8 diodes LED :
On propose de faire clignoter LEDs branchées au port B du microcontrôleur de deux
façons différentes :
- Si RA0 = 0, tous les LEDs clignotent avec une période d’une seconde.
- Si RA0 = 1, les LEDs doivent clignoter chaque 500 ms comme indiqué dans la figure
cidessous.
Ecrire un programme en C permettant de commander les diodes LED.
Exercice 2 :
On désire commander un afficheur à 7 segments afin de réaliser un compteur modulo 10
à l’aide d’un microcontrôleur 16F84A.
1. Ecrire un programme C qui permet de réaliser le fonctionnement suivant :
- Compteur modulo 10 commandé par la position 1 du switcher (RA0).
- Décompteur modulo 10 commandé par la position 2 du switcher (RA1).
Exercice 3 :
Soient les équations suivantes d’un système logique combinatoire :
𝑆1 = 𝐴 ∙ 𝐵 + 𝐶̅ ∙ 𝐵̅
𝑆2 = 𝐴 ∙ 𝐵̅ + 𝐶̅ ∙ 𝐵 + 𝐶
̅̅̅̅̅̅̅̅
𝑆3 = 𝐴 + 𝐵 + 𝐶 ∙ 𝐵̅
𝑆4 = 𝐴 + 𝐶̅ ∙ 𝐵
On propose le schéma de simulation suivant :
- Ecrire un programme en C qui permet d’implanter le système combinatoire
précédent
Exercice 4 :
Pour faire varier la vitesse d’un moteur à courant continu, on vous propose le circuit de la
figure ci-dessous :
- Ecrire un programme qui lit une valeur numérique sur le PORTB sous forme d’un
nombre codé sur 8 bits. Ce nombre constituera le rapport du cyclique d'un signal
PWM qui va être généré pour commander un moteur à courant continu.
Exercice 5 :
On désire réaliser un compteur modulo 10 en utilisant le Timer TMR0 d’un PIC 16F84A.
Le compteur est incrémenté à chaque front montant. On propose le schéma de la figure
ci-dessous :
1. Indiquer si le mode de fonctionnement du TMR0 est compteur ou temporisateur.
2. Ecrire un programme en MikroC permettant de compléter la fonction désirée.
Exercice 6 :
On désire réaliser un compteur binaire 8 bits et afficher le résultat sur 8 diodes LED. Pour
réaliser ce cahier des charges, on propose le circuit de la figure suivante.
- Ecrire un programme en MikroC qui à chaque impulsion sur le bouton lié à l’entrée
RB0 incrémente le compteur et affiche le résultat sur le PORTD.
Registre de configuration du Timer0: OPTION_REG
Bit 6 INTEDG = Interrupt Edge select bit.
1 = Interruption si front montant sur la broche PB0/IRQ (pin 6).
0 = Interruption si front descendant sur PB0/IRQ.
Le registre INTCON: