Vous êtes sur la page 1sur 21

Chapitre 5 : Microprocesseurs et microcontrôleurs 1

1 – Qu’est-ce qu’un microcontrôleur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2


2 – Configuration de base d’un microcontrôleur . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 – Microcontrôleur : les entrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 – Microcontrôleur : les sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 – Microcontrôleur : le microprocesseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6 – Microcontrôleur : la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
7 – Le microcontrôleur M 6 8 H C 0 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8 – Programmation du microcontrôleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
9 – Les instructions du microcontrôleur M68HC05 . . . . . . . . . . . . . . . . . . . . . . . . 13
10 – Exemple : Commande d’une diode électro-luminescente (LED) . . . . . . . . . . . . . . . 16
11 – Organigramme de commande d’une LED . . . . . . . . . . . . . . . . . . . . . . . . . . 17
12 – Commande d’une LED : Sous-routine DLY50 . . . . . . . . . . . . . . . . . . . . . . . . 18
13 – LED : Programme en langage d’assemblage . . . . . . . . . . . . . . . . . . . . . . . . 19
14 – LED : Programme en langage d’assemblage - suite . . . . . . . . . . . . . . . . . . . . . 20
15 – LED : Langage d’assemblage - Sous-routine DLY50 . . . . . . . . . . . . . . . . . . . . . 21

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 2

1 – Qu’est-ce qu’un microcontrôleur ?

microcontrôleur C’est un système informatique complet sur un même circuit intégré (chip).
Il comprend :

• Un microprocesseur (CPU = Central processing Unit)


• Une horloge pour cadencer le CPU
• Une mémoire pour les instructions et les données
• Les entrées pour introduire les informations dans le système informatique
• Les sorties pour recueillir les informations du système informatique
• Un programme pour que le système informatique fasse quelque chose d’utile
Même si les systèmes informatiques partagent les mêmes éléments de base, il existe différents types de
systèmes pour différentes tâches :

• Les serveurs sont de gros ordinateurs destinés à faire de gros travaux.


• Les ordinateurs personnels sont des versions de serveurs en plus petit pour faire du traitement de
texte et du dessin technique.

• Les microcontrôleurs sont des ordinateurs à un chip très utilisés pour la commande de petits
appareils. Ils sont utilisés, par exemple, pour convertir le mouvement d’une souris en des données
série dans un ordinateur personnel.
École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003
Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 3

2 – Configuration de base d’un microcontrôleur

Programme

Interrupteur LED

Mémoire

Clavier Alarme
1 2 3 4 5 6
a b c d e f CPU
> < = ? ! . IN OUT

Capteur de to C Relais

oC Horloge

Cristal

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 4

3 – Microcontrôleur : les entrées

• Les entrées fournissent l’information externes au microcontrôleur.

• Dans un ordinateur normal, le clavier fournit les entrées externes.

• Dans un microcontrôleur, les entrées proviennent de capteurs, d’interrupteurs, de petit claviers


numériques, etc.

• Les entrées des microcontrôleurs n’acceptent que les signaux numériques qui sont au même niveau
que la source d’alimentation principale des circuits logiques. La borne 0 volts est désignée par VSS
et la borne positive VDD est égale à 5 volts courant continu. Une tension approximative de 0 volts
correspond à un 0 logique et celle de 5 volts à un 1 logique.

Dans la nature, nous n’avons que des signaux analogiques et des niveaux de tensions différents de ceux
des microcontrôleurs. Certains circuits convertissent les signaux analogiques en signaux numériques.
Certains microcontrôleurs intègrent des CAN dans le même chip.

Des transducteurs (capteurs + convertisseurs de pression, de température, etc.) peuvent être utilisés
pour convertir des signaux existants dans la nature en des signaux numériques qui peuvent être compris
et manipulés par le microcontrôleur.

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 5

4 – Microcontrôleur : les sorties

• Les sorties communiquent des informations ou actions du microcontrôleur à des éléments externes.

• Dans un ordinateur normal, l’élément externe le plus connu est le moniteur.

• Dans un microcontrôleur, les sorties vont vers des éléments externes simples tels des lampes,
sonneries, gachettes de semi-conducteurs, etc.

• Le microcontrôleur n’émet que des signaux numériques et des circuits spécialisés se trouvant dès
fois dans le même chip, sont nécessaires pour convertir les signaux numériques en signaux
analogiques.

Le terme ”contrôleur” dans microcontrôleur vient du fait que ces petits ordinateurs souvent contrôlent
quelque chose par rapport à l’ordinateur qui, lui, traite une information.

Dans le cas d’un micro-ordinateur, les sorties sont souvent de l’information affichée à l’écran ou
transmise à une imprimante.

Dans un microcontrôleur, les sorties sont des signaux numériques utilisés pour commander des LED ou
des appareils électriques (relais, moteurs, etc.).

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 6

5 – Microcontrôleur : le microprocesseur

Un microcontrôleur est un système informatique complet qui inclut un CPU, une mémoire, une horloge et
des I/O dans le même chip. Lorsque des éléments tels que la mémoire ou les I/O sont manquants, alors le
chip est appelé microprocesseur.

• Le CPU (Central Processing Unit ou Unité Centrale de Traitement) est au centre de chaque système
informatique. Son rôle est d’exécuter fidèlement le programme des instructions fournis par le
programmeur.

• Un programme ordonne au CPU de lire l’information à partir des entrées, de lire l’information à partir
de la mémoire, de stocker l’information dans la mémoire et enfin d’envoyer l’information vers les
sorties.

• Contrairement aux ordinateurs personnels, dans un microcontrôleur, il n’y a généralement qu’un


seul programme en fonction dans une application particulière. Chaque microcontrôleur dispose de
son propre jeu d’instructions (60 dans le M68HC05).

Horloge : Les ordinateurs, à peu d’exception près, utilisent une petite horloge (oscillateur) pour dire au
CPU de passer d’une étape à l’autre selon des cycles bien déterminés.

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 7

6 – Microcontrôleur : la mémoire

Les deux types de mémoire qu’on trouve dans les microcontrôleurs sont :

• ROM (Read Only Memory ou Mémoire Morte) utilisée principalement pour des programmes ou
données permanentes qui doivent rester inchangées même en l’absence d’alimentation.

• RAM (Random Access Memory ou Mémoire Vive) utilisée pour le stockage temporaire des données
et des calculs intermédiaires.

Certains microcontrôleurs contiennent en plus d’autres types de mémoires :

• EPROM (Erasable Programmable Read Only Memory)

• EEPROM (Electrically Erasable Programmable Random Access Memory)

La plus petite unité de mémoire est le bit qui peut stocker la valeur 0 ou 1.
Ces bits sont regroupés en ensembles de 8 bits pour former l’octet (byte).
Des calculateurs plus grands utilisent des ensembles de 16, 32 ou 64 ensembles de bits.

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 8

Une mémoire est formée de certaines cellules ou cases, chacune d’elles contenant une certaine quantité
d’informations.
Chaque cellule porte un numéro appelé adresse qui permet à un programme de la référencer.
Si une mémoire a n cellules, alors les adresses vont de 0 à (n-1). Toutes les cellules de la mémoire
contiennent le même nombres de bits, par exemple k bits, ce qui permet de représenter 2k combinaisons
différentes.
Exemple Soit une mémoire de 96 bits : Cette mémoire peut être réalisée physiquement selon trois

façons différentes selon le nombre de bits qu’occupe une cellule.

cellules cellules cellules


de 8 bits de 12 bits de 16 bits

0 0 0
1 1 1
.
2 2 .
.
. .
. . 5
. .
.
. 7
.
11

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 9

• si chaque cellule est composée de 8 bits, on peut avoir 96/8=12 cellules.

• si chaque cellule est composée de 12 bits, on peut avoir 96/12=8 cellules.

• si chaque cellule est composée de 16 bits, on peut avoir 96/16=6 cellules.

Pour une adresse de m bits, le nombre maximum de cellules mémoire directement


adressables est de 2m .

Pour adresser les 12 cellules de 8 bits, on a besoin seulement de 4 bits car 24 = 16.
Pour adresser les 8 cellules de 12 bits, on a besoin seulement de 3 bits car 23 = 8.
Pour adresser les 6 cellules de 16 bits, on a besoin seulement de 3 bits car 23 = 8.

Remarque Le nombre de bits d’une adresse ne dépend que du nombre de cellules mémoire

directement adressable et non de leur taille. Une mémoire de 212 cellules de 8 bits doit être adressée
avec 12 bits tout comme une mémoire de 212 cellules de 32 bits.

La cellule mémoire est la plus petite quantité d’information adressable. Dans la plupart des systèmes
informatiques actuels, la cellule est de 8 bits.

Toutefois, quand on dit qu’une machine est de 16 bits (ou 32 bits) par exemple, cela veut dire que cette
machine a des registres de 16 bits (ou 32 bits) et des instructions manipulant des mots de 16 bits (ou 32
bits).

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 10

7 – Le microcontrôleur M 6 8 H C 0 5

Alimentation Mémoire pour


VDD le programme

Bus des adresses

Bus des données


VSS
mise à
la terre Mémoire pour
les données

Entrées - Sorties
Entrées Sorties
et périphériques
numériques numériques

Reset CPU

Cristal Horloge

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 11

8 – Programmation du microcontrôleur

Langage machine une suite d’instructions codée en binaire (code machine). C’est le seul type

d’information que comprend le processeur (ou micro-contrôleur).


Il faut un grand nombre de 0 et de 1 pour représenter les instructions sans toutefois qu’il y ait la moindre
confusion possible.

Langage d’assemblage Il n’est qu’une représentation du langage machine, plus facile à écrire et à

comprendre. À chaque instruction est associé un mnémonique.

add ra, rb, rc # additionner les contenus des registres rb et rc

# et mettre le résultat dans le registre ra.

Pour les processeurs de type x86, le mnémonique ADD (addition) est utilisé à la place du code
1011101111101101. La traduction de ces mnémoniques en code machine est à la charge de l’assembleur
(équivalent du compilateur).

Les programmeurs préfèrent des langages plus évolués tels que le C, C++, Pascal, Basic, etc. et c’est le
compilateur qui traduit le code source en langage machine.

Un programme en langage machine est interprété par le processeur. Chaque instruction est décomposée
en instructions élémentaires, appelées micro-instructions. L’avantage de ce procédé est de diminuer le
nombre des circuits spécialisés au profit d’une architecture plus généraliste.

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 12

Cycle d’exécution d’une instruction

1. Chargement de l’instruction pointée par le compteur ordinal (CPU) depuis la mémoire (ROM)
jusqu’au registre instruction (CPU);

2. Modification du compteur ordinal pour qu’il pointe sur l’instruction suivante;

3. Décodage de l’instruction que l’on vient de charger;

4. Localisation dans la mémoire des données utilisées par l’instruction et chargement des différents
opérandes dans les registres internes du CPU;

5. Exécution de l’instruction;

6. Stockage des résultats dans leurs destinations respectives et retour à l’étape 1 pour exécuter
l’instruction suivante.

Format général d’une instruction

champ 1 champ 2 champ 3 champ 4

étiquette Code de l’opération Adresse 1 Adresse 2 ···

Le code de l’opération (champ 2) indique le type d’instruction à effectuer (addition, décalage, etc). Les
opérations sont effectuées sur des opérandes se trouvant à des adresses précises (champ 3, champ 4,
etc).

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 13

9 – Les instructions du microcontrôleur M68HC05

Instruction Fonction Instruction Fonction

ADC Add with Carry BIL Branch if Interrupt Pin is Low

ADD Add without Carry BIT Bit Test Memory with Accumulator

AND Logical AND BLO Branch if Lower

ASL Arithmetic Shift Left BLS Branch if Lower or same

ASR Arithmetic Shift Right BMC Branch if Interrupt Mask is Clear

BCC Branch if Carry Clear BMI Branch if Minus

BCLR n Clear Bit n in Memory BMS Branch if Interrupt Mask is Set

BCS Branch if Carry Set BNE Branch if Not Equal

BEQ Branch if Equal BPL Branch if Plus

BHCC Branch if Half Carry Clear BRA Branch Always

BHCS Branch if Half Carry Set BRN Branch Never

BHI Branch if Higher BRCLR n Branch if Bit n is Clear

BHS Branch if Higher or Same BRSET n Branch if Bit n is Set

BIH Branch if Interrupt Pin is High BSET n Set Bit n in Memory

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 14

Les instructions du microcontrôleur M68HC05 - suite

Instruction Fonction Instruction Fonction

BSR Branch to Subroutine LSL Logical Shift Left

CLC Clear Carry Bit LSR Logical Shift Right

CLI Clear Interrupt Mask Bit MUL Multiply Unsigned

CLR Clear NEG Negate

CMP Compare Accumulator with memory NOP No Operation

COM Complement ORA Inclusive-OR

CPX Compare Index Register with memory ROL Rotate Left thru Carry

DEC Decrement ROR Rotate Right thru Carry

EOR Exclusive-OR Memory with Accumulator RSP Reset Stack Pointer

INC Increment RTI Return from Interrupt

JMP Jump SBC Subtract with Carry

JSR Jump to Subroutine RTS Return from Subroutine

LDA Load Accumulator from Memory SEC Set Carry Bit

LDX Load Index register from memory SEI Set Interrupt Mask bit

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 15

Les instructions du microcontrôleur M68HC05 - suite

Instruction Fonction Instruction Fonction

STA Store Accumulator in memory STX Store Index register X in Memory

STOP n Enable IRQ, Stop Oscillator SUB Subtract

SWI Software Interrupt TST Test for Negative or Zero

TAX Transfer Accumulator TXA Transfer Index register

to Index Register to Accumulator

WAIT Enable Interrupt, Stop Processor

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 16

10 – Exemple : Commande d’une diode électro-luminescente (LED)

Pose du problème

• Écrire un programme qui lit l’état d’un interrupteur branchée à une broche d’entrée d’un
microcontrôleur.

• Lorsque l’interrupteur est fermé, le programme doit alumer une LED branchée à une broche à la
sortie pour environ 1 seconde et ensuite s’éteindre. La LED ne se réallumera pas avant que
l’interrupteur ne s’ouvre et se ferme une autre fois.

• La durée pendant laquelle l’interrupteur est maintenu fermé n’affecte pas la durée pendant laquelle la
LED reste allumée.

Objectifs du problème

• montrer comment un programme peut détecter des signaux d’entrée comme l’ouverture et la
fermeture d’un interrupteur,

• c’est un exemple de programme pour contrôler un signal de sortie,

• le fait que la LED reste allumée pendant 1 seconde montre comment un programme peut être utlisé
pour contrôler la mesure en temps réel.

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 17

11 – Organigramme de commande d’une LED

Begin LDA #20


DLYLP JSR DLY50
Délai de 1 seconde
DECA
BNE DLYLP
Conditions initiales INIT LDA #$80
STA PORTA Éteindre la LED BSET 7, PORTA
Port A bit 7 = 1 (LED éteinte)
Rendre Port A bit 7 une sortie
STA DDRA

Interrupteur OFFLP BRSET 0,PORTA,OFFLP


TOP LDA PORTA non encore
Lire l’interrupteur fermé ?
AND #$01

oui
JSR DLY50
fermé ? BEQ TOP Délai de 50 ms
non
oui BRA TOP

Délai de 50 ms
JSR DLY50

Allumer la LED
BCLR 7, PORTA

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 18

12 – Commande d’une LED : Sous-routine DLY50

Démarrage
sous-routine

sauver dans DLY50 STA TEMP1 INNRLP est exécutée 256 fois par
accumulateur a=
passage à travers la boucle externe
changer la valeur
correspondant à 50 ms LDA #65 b = OUTLP est exécutée 65 fois

OUTLP CLRX
Diminuer le comptage
INNRLP DECX
a
BNE INNRLP
b
DECA
Comptage
non terminé ? BNE OUTLP

oui
restaurer LDA TEMP1
accumulateur

retour de la RTS
sous-routine

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 19

13 – LED : Programme en langage d’assemblage

$BASE 10T ; utiliser des valeurs décimales

; sauf si un $ ou un % précèdent

0000 PORTA EQU $00 ; accès direct du port A

0004 DDRA EQU $04 ; contrôle direct du port A

00E0 TEMP1 EQU $C0 ; stockage temporaire à 1 bit

0300 ORG $0300 ; le programme commence à $0300

0300 INIT LDA #$80 ; commence l’initialisation

0302 STA PORTA ; la LED est OFF

0304 B7 04 STA DDRA ; mettre port A bit 7 comme sortie

... suite ...

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 20

14 – LED : Programme en langage d’assemblage - suite

reste du port A configuré comme entrée

0306 B6 00 TOP LDA PORTA ; lire interrupteur à LSB du port A

0308 A4 01 AND #$01 ; pour tester le bit 0

030A 27 FA BEQ TOP ; boucle jusqu’à bit 0 = 1

030C CD 03 23 JSR DLY50 ; retard de 50 ms

030F 1F 00 BCLR 7, PORTA ; allumer LED (bit 7 = 0)

0311 A6 14 LDA #20 ; conversion décimal 20 en 14 Hexa

0313 CD 03 23 DLYLP JSR DLY50 ; retard de 50 ms

0316 4A DECA ; compteur de boucle pour 20 boucles

0317 26 FA BNE DLYLP ; 20 fois (20-19, 19-18, ..., 1-0)

0319 1E 00 BSET 7, PORTA ; éteindre LED

031B 00 00 FD OFFLP BRSET 0,PORTA,OFFLP ; boucler jusqu’à interrupteur OFF

031E CD 03 23 JSR DLY50 ; comptage terminé

0321 20 E3 BRA TOP ; attendre que interrupteur ON

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas
Chapitre 5 : Microprocesseurs et microcontrôleurs 21

15 – LED : Langage d’assemblage - Sous-routine DLY50

0323 B7 C0 DLY50 STA TEMP1 ; sauvegarder la valeur de

; l’accumulateur dans la RAM

0325 A6 41 LDA #65 ; faire la boucle externe 65 fois

0327 5F OUTLP CLRX ; le registre X utilisé

; pour le comptage interne

0328 5A INNRLP DECX ; (0-FF, FF-FE, ..., 1-0) 256 fois

0329 26 FD BNE INNRLP ; 6 cyc*256*500ns/cyc=0.768ms

032B 4A DECA ; 65-64, 64-63, ... 1-0

032C 26 F9 BNE OUTLP ; 1545cyc*65*500ns/cyc=50.212ms

032E B6 C0 LDA TEMP1 ; reprendre la valeur sauvegardée

; de l’accumulateur

0330 81 RTS ; retour

École Polytechnique de Montréal : MEC 4540 - Génie Mécanique Automne 2003


Prof. E.K. Boukas