Vous êtes sur la page 1sur 4

MICROCONTRÔLEURS

I. Architecture interne
L’élément essentiel dans les microcontrôleurs est le processeur. Le processeur
est une unité de calcul qui exécute les instructions du programme.
I.1. Exécution d’une instruction d’un programme
La figure 1 illustre d’une manière simplifiée le déroulement de l’exécution d’une
instruction de calcul (logique ou arithmétique) par l’unité de calcul.

Fig. 1

Une instruction d’un programme, stockée dans la mémoire programme, est


exécutée selon le cycle suivant :
 le compteur programme (2) pointe l'instruction à exécuter dans la mémoire
programme (1) ;
 cette instruction est envoyée aux registres d'instructions et de décodage ;
 les registres d'instructions et de décodage (3) :
✓ fixent la stratégie de déroulement de cette opération ;
✓ analysent et décodent cette instruction ;
✓ fixent l'opération à exécuter en informant l'unité de calcul ;
✓ donnent l’ordre d’envoi des opérandes et de l’opérateur à l'unité de
calcul ;
 exécution de l'opération par l'unité de calcul (5) ;
 chargement du résultat dans les registres de travail (6).
Les registres de travail (6) sont reliés via des bus internes à une variété de
registres où ce résultat sera récupéré et stocké. Ce résultat, selon les instructions
du programme, peut être communiqué sur une ou plusieurs broches du
microcontrôleur.
Les étapes de cette opération de calcul se déroulent selon un rythme fixé soit par
une horloge interne soit par une horloge externe du microcontrôleur.
I.2. Architecture simplifiée d’un microcontrôleur type PIC16F84A
La figure 2 représente une architecture simplifiée d’un microcontrôleur du type PIC16F84.

1
Fig. 2

Le tableau suivant rassemble le nom et la fonction de chaque élément évoqué dans


cette architecture.

1 - Mémoire programme Stocker le programme.


2 - Compteur du programme Choisir l'instruction à exécuter (pointeur).

3- Ports entrées/sorties Pour la communication des informations.

4- Unité de calcul Exécuter les opérations de calcul.

5- RAM Mémoire vive : enregistrement temporaire des


données.
6- EEPROM Mémoire morte programmable et effaçable
électriquement.
7- Horloge Rythmer le cycle d'exécution du microcontrôleur.
8- Registre de décodage Décoder une instruction.
9- Registre d'état Enregistrer le dernier état du calculateur.
10 - Registre de travail Enregistrer le dernier résultat de calcul de l'UAL
11- Registre d'instructions Stocker une instruction à exécuter.
12- Timer Fournir ou reçoit le résultat de comptage.
13 - multiplexeur Suite à une autorisation, il cède le passage à une
information parmi plusieurs présentes en entrée.
14- Reset Initialiser le microcontrôleur.

2
II. Ports d’entrées/sorties
 Si un bit (i) du registre TRISA est égal à (0) alors le bit correspondant du PORTA est
configuré en sortie ;
 Si le bit (i) du registre TRISA est égal à (1) alors le bit i du PORTA est configuré en
entrée.

Fig. 3

Le port B (figure 4) est un port bidirectionnel de 8 bits (RB0 à RB7). La configuration de la


direction des broches en entrée ou en sortie se fait à l'aide du registre « TRISB ». Elle est
identique à celle utilisée pour le « PORTA » et le registre « TRISA ».

Fig. 4

III. Choix d’un microcontrôleur


Le choix d’un microcontrôleur se base principalement sur les trois critères
suivants :
 Caractéristiques techniques :
✓ Nombres des entrées/sorties et de Timers/compteurs ;
✓ Modules intégrés comme les convertisseurs ;
Analogiques/Numérique, les comparateurs ….
✓ Fréquence d’horloge ;
✓ Mémoire programme (type, taille).
 Outils de développement :
✓ Editeurs de programmes,
✓ La possibilité de simuler le fonctionnement,
✓ Le programmateur servant à transférer le programme vers le
microcontrôleur.
 Contraintes économiques :
✓ Coût des outils de développement ;
✓ Prix et disponibilité du microcontrôleur sur le marché ;
3
✓ Consommation en énergie.

IV. Programme

sbit S1 at RA0_bit;
sbit S2 at RA1_bit;
sbit V1 at RB0_bit;
sbit V2 at RB1_bit;
void main() {
TRISA=0xff;
PORTB=1;
TRISB=0xFC;

while(1) {
if (S1==0 && S2==0) {V1=1; V2=1 ;}
else if (S1==1 && S2==0) {V1=0; V2=1 ; }
else if (SP==0 && S2==1) {V1=1; V2=0 ; }
else {V1=0; V2=0;}

}
}

Vous aimerez peut-être aussi