0% ont trouvé ce document utile (0 vote)
23 vues56 pages

Micro Contrôleurs

Micro-contrôleurs

Transféré par

Anna
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
0% ont trouvé ce document utile (0 vote)
23 vues56 pages

Micro Contrôleurs

Micro-contrôleurs

Transféré par

Anna
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

Microcontrôleurs

1 GENERALITES
Un micro contrôleur (µC) est un circuit intégré,
disposant d'un ensemble de fonctions prédéfinies
appelé jeu d'instructions.
Ce dernier permet au µC d‘effectuer un certain
nombre d'actions (ET logique, OU logique, additions
d'entiers...) principalement sur sa mémoire.
Microcontrôleurs

Montage électronique

Entrées Logique cablée Entrées

Traitement par un micro-contrôleur

Architecture d'un microcontrôleur


Micro-contrôleurs
Dans un µC, un microprocesseur (µP) fonctionne en
interaction avec des zones de mémoire et un certain
nombre de périphériques par l'intermédiaire de
lignes de commande ou de bus.
Tout ce fonctionnement est cadencé par une
horloge et chaque action effectuée à l'intérieur du
µC requiert un certain nombre de cycles d'horloge.
Toutes ces entités sont regroupées en un seule
circuit intégré (une puce).
Micro-contrôleurs

Périphériques
Mémoires
Liaisons "série"
RAM
µP Liaisons parallèles
ROM
Timer
EPROM
...etc...
EEPROM

Bus de données

Bus Adresses

Lignes de contrôle
Micro-contrôleurs
2. Le rôle du µP
Sa seule fonction est de prendre des données
provenant de périphériques ou de la mémoire, de
leur faire subir un traitement, puis de les renvoyer
sur des périphériques ou dans la mémoire. Il se
compose plus précisément des éléments suivants :
Micro-contrôleurs
2.1 une A.L.U. ou Unité Arithmétique et Logique:
permet effectuer les opérations arithmétiques et
logiques élémentaires sur les données manipulées
par le µP (addition, soustraction, multipilications,
divisions, Et logique, OU logique, ...)
2.1 des registres de travail : zones de mémoire
spéciales intégrés dans le µP et permettant
d’exécuter les diverses instructions (ex : opérations
élémentaires de l'A.L.U.)
Micro-contrôleurs
2.3. la logique de contrôle : c'est un organe du µP qui
lui permet de gérer les données circulant sur les lignes
de contrôle.
2.4. la logique d'adresse : elle permet au µP de gérer les
informations à émettre sur le bus d'adresse.
2.5. le registre d'instruction décodeur : c'est lui qui doit
interpréter les différentes instructions du programme et
renseigner ainsi l'unité de commande.
2.6. l'unité de commande : elle contrôle l'ensemble du
fonctionnement du µP et active les différents éléments.
Micro-contrôleurs
3. Les différentes mémoires
- La RAM (Read Access Memory) : c'est une zone de
mémoire dans laquelle le µP peut lire ou écrire à
tout instant de l'exécution d'un programme. On y
trouve les données utiles à l'exécution de ce
programme telles que les variables;
Micro-contrôleurs
- La ROM (Read Only Memory) : c'est une zone de
mémoire dans laquelle le µP ne peut que lire. On
peut y trouver des informations prédénies sur le µC
qui ne peuvent ni ne doivent être modiées (telles
que le programme dans la plupart des applications
industrielles);
Micro-contrôleurs
- L'EPROM (Electrical Programmable Read Only
Memory) : c'est une ROM dans laquelle on peut
écrire en dehors de l'exécution par un procédé bien
particulier et qui ne pourra plus être modifée. C'est
dans ce bloc-mémoire que l'on écrit le programme à
exécuter.
Micro-contrôleurs
- l'EEPROM (Erasable Electrical Programmable Only
Memory) : elle est comparable à l'EPROM mais on
peut la reprogrammer c'est-à-dire renouveler les
instructions qui s'y trouvent, ceci toujours en dehors
de l'exécution.
Micro-contrôleurs
4. Les périphériques
- le Timer qui utilise l'horloge an de permettre au
µP de gérer des processus qui font intervenir le
temps avec précision;
- les périphériques de liaison (série ou parallèle) qui
permettent au µC d'échanger des données avec
l'environnement extérieur (capteurs, actionneurs);
Micro-contrôleurs
- Dans le cadre plus général de cet échange avec
l'extérieur, les CAN (Convertisseurs Analogiques
Numériques) qui permettent de convertir une
tension analogique provenant d'un signal extérieur
en une donnée numérique exploitable par le µP et
les CNA (Convertisseurs Numériques Analogiques)
qui émettent vers l'extérieur, sous forme d'une
tension analogique, une donnée numérique fournie
par le µP.
Microcontrôleurs
- la logique d'interruption; une interruption est un
événement engendré par l'extérieur, qui survient
inopinément et qui doit être immédiatement pris en
compte par le µP en pleine exécution d'un
programme. La logique d'interruption est un organe
du µC chargé d'assister le µP.
Le 68HC11E2
1. Alimentation et masse: VDD et VSS
Le 68HC11 est alimenté par une tension de 5V au
niveau de la broche VDD et 0V au niveau de VSS.
2. Bus de données, poids faible du bus d ’adresse et
le port C:
PC0/ AD0 ……. PC7/ AD7
Ce bus est multiplexé entre les lignes de données, le
poids faible de l ’adresse et le port C. Il est
bidirectionnel pour les données et le port C et
sortant pour le poids faible de l ’adresse .
68HC11E2
3. Poids fort du bus d ’adresse et le port B:
PB0/ A8 ……. PB7/ A15
Le Poids fort du bus d ’adresse est multiplexé avec
le port B. Il est unidirectionnel et constitue le poids
faible de l’adresse de la donnée à manipuler.
68HC11E2
UNITE CENTRALE
1. Les registres internes
1.1 Accumulateurs A, B ou D
Ce sont de registres de 8 bits appelés accumulateurs
qu’on peut regrouper pour former un accumulateur
de 16 bits noté D.
b7 b6 b5 b4 b3 b2 b1 b0 b7 b6 b5 b4 b3 b2 b1 b0

A B
d15 d0

D
68HC11E2
1.2 Les registres X et Y : registres index
Ce sont de registres de 16 bits. Il servent à contenir
un index (registre d’adresse ou l’adresse de base) ou
bien une donnée sur 16 bits. Utilisés dans le mode
d’adressage indexé.
b15 b0

b15 b0

Y
68HC11E2
1.3. Le pointeur de pile SP (Stack Pointer)

Ce registre sur 16 bits permet de gérer une zone


mémoire RAM libre appelée pile dont
l’emplacement est précisé par le programmeur et
dont le rôle est de sauvegarder temporairement le
contenu des registres internes du microcontrôleur.
68HC11E2
1.4 Le compteur programme PC

C’est un registre à 16 bits . Il pointe en permanence


sur l’adresse de la prochaine instruction à exécuter.
68HC11E2
1.5 Le registre d’état CCR: Code Condition Register.

b7 b6 b5 b4 b3 b2 b1 b0
S X H I N Z V C

H: Half carry
C : Carry : retenu
I: Interrupt mask
V: oVerflow :
X : eXternal Interrupt
débordement
mask
Z : Zéro :nul
S: masque de
N: Négatif
l’instruction Stop
68HC11E2
Les Modes d’adressage
Un mode d’adressage est la méthode utilisée par le
microcontrôleur pour manipuler une donnée
connue à l’avance ou contenue dans un
emplacement mémoire
68HC11E2
Mode adressage immédiat:
Ce mode permet d’initialiser un ou plusieurs
registres par une donnée de 8 bits ou 16 bits sans
faire appel à la mémoire:
Ex.
LDAA #$20 ou encore LDX #$1000
(A) = $20 (X)* = $1000
Les parenthèses veulent dire le contenu du registre
68HC11E2
Mode adressage direct
La donnée est repérée à l’aide d’une adresse
effective sur 8 bits c’est-à-dire entre $00 et $FF ce
qui correspond au 256 premiers octets de l’espace
mémoire adressable.
Ex. LDAB $70
B sera chargée par le contenu de l’adresse $70
68HC11E2
Mode adressage direct étendu
L’adresse de la donnée est sur 16 bits comprise entre
$0000 et $FFFF.
Ex. STAB $2000
Stocker le contenu de B dans la case $2000

STY $1000
Stocker le contenu de Y dans les cases $1000 et $1001
68HC11E2
Mode adressage indexé
L’adresse où se trouve la donnée est le résultat de la
somme du contenu de l’un des registres index X ou Y et
1 octet (non signé) compris entre $00 et $FF.
Ex.
LDAA $29,Y
charge A par le contenu de l’adresse (Y)+$29
Supposons que (Y)=$01FF
On aura dans A le contenu de l’adresse $0228
68HC11E2
Mode adressage implicite ou inhérent
Manipulation d’une donnée se trouvant dans l’un
des registres internes ou dans une case mémoire.
Ex.
INCA (incrémente le contenu de A)
(A)=$FF après INCA (A)=$00
INC $00 (incrémente le contenu de la case $00)
($00)= $20 après INC $00 ($00)= $21
68HC11E2
Mode adressage relatif
Mode appelé lors des tests et des branchements:
$0000 LDAA #$45
$0002 Etiquette DECA
$0003 BNE Etiquette
$0004 STAA $1000
En exécutant l’instruction de test BNE (Branch if Not
Equal) le microcontroleur doit exécuter l’instruction
repérée par Etiquette si le résultat est vrai sinon , il
rxecutra l’instruction suivante et qui est dans ce cas
STAA $1000
68HC11E2
Exercice1
En utilisant le mode d’adressage immédiat initialiser les accumulateurs A et B par 2
données complémentaires de votre choix et un des 2 registres index X ou Y

Solution:
ORG $C000
LDAA #$00 ; Charger A par la valeur $00
LDAB #$FF ; Charger B par la valeur $FF
LDX #$2233 ; Charger X par la valeur $2233
SWI
END
68HC11E2
Exercice2
En utilisant le mode d’adressage direct charger l’accumulateurs D par le contenu de
la case mémoire $10 et le pointeur de pile SP par le contenu de la case mémoire
$11

Solution:
ORG $C000
LDD $10 ; Charger D par le contenu des cases mémoires
d’adresse $10 et $11
LDS $12 ; Charger S par le contenu des cases mémoires
d’adresse $12 et $13
SWI
END
68HC11E2
Exercice 3
En utilisant le mode d’adressage direct étendu charger l’accumulateurs Y par le contenu de la
case mémoire $1000, l’incrémenter ensuite le placer en mémoire à la case mémoire $2000

Solution:
ORG $C000
LDY $1000 ; Charger Y par le contenu des cases mémoires
d’adresse $1000 et $1001
INY ; Le contenu de Y est incrémenté de 1
STY $2000 ; Le contenu de Y est mis en mémoire aux adresses $2000 et $2001
SWI
END
68HC11E2
Exercice 4
En utilisant le mode d’adressage indexé sur X additionner le contenu de la 5ème case mémoire
avec celui de la 7ème , d’une liste de 30 élément dont l’adresse de début est $0000
Solution:
ORG $C000
LDX #$0000 ; Charger Y $000 (adresse de base de la liste)
LDAA $04,X ;charger A par le contenu de l’adresse $0004
(X + $04 : adresse de la 5ème case mémoire)
ADDA $06,X ; ajouter à A le contenu de l’adresse $0006
(X + $06 : adresse de la 7ème case mémoire)
Le résultat est dans A
SWI
END
68HC11E2
Exercice 5
En utilisant le mode d’adressage indexé sur Y remplacer le contenu de la 20ème case mémoire
de la liste précédente par celui de la dernière
Solution:
ORG $C000
LDY #$0000 ; Charger Y $000 (adresse de base de la liste)
LDAB $1D,Y ;charger B par le contenu de l’adresse $001D
(X + $1D : adresse de la 30ème case mémoire)
STAB $13,Y ; placer le contenu de B dans la 20ème case mémoire d’adresse $0013
(Y+ $13 : adresse de la 20ème case mémoire)

SWI
END
68HC11E2
Exercice 6
En utilisant le mode d’adressage inhérent et relatif incrémenter le contenu de la case
mémoire $1000 après sa mise à 0 et sans dépasser la valeur $20.
Solution:
ORG $C000
CLR $1000 ; mise à 0 du contenu de l’adresse $1000
LDAA $1000 ; Charger A par le contenu de A
OUI INCA ; incrémenter A
CMPA #$20 ; compare A à la valeur $20
BLS OUI ; test si le contenu de A est inférieur ou égale à $20 alors
on incrémente A sinon on place le contenu de A dans $1000
STAA $1000 ; Mise en mémoire à l’adresse $1000 du contenu de A
SWI
END
68HC11E2 jeu d’instruction
1. INSTRUCTION DE TRANSFERTS ENTRE MÉMOIRE ET REGISTRES
INTERNES
4 types:
• Chargement d’une donnée de 8 bits ou 16 bits dans l’un des
registres internes:
LDDA LDAB LDD LDX LDY LDS
LDDA LoaD Accumulator A
• Mi se en mémoire du contenu de l’un des registres internes:
STAA STAB STD STX STY STS
• Transfert du contenu entre les registres internes:
TAB (Transfert Acc A dans B) TBA TXY TYX TXS TYS …..
• Transfert entre mémoire et pile (sauvegarde et restitution du
contenu des registres internes):
PSHA PSHB PSHX PSHY PULA PULB PULX PULY
68HC11E2 jeu d’instruction
2. INSTRUCTIONS ARITHMETIQUES
+ Additionner acc A à l’acc B , le résultat est dans A:
ABA (A=A+B)
+ Additionner l’acc A et une donnée plus la retenue, le résultat est placé dans A:
ADCA
Idem pour : ADCB
+ Additionner l’acc A et une donnée, le résultat est placé dans A sans retenue :
ADDA
Idem pour ADDB ADDD
+ Division réelle du contenu de l’acc D par celui de X , le quotion sera placé dans X et
le résultat dans D: FDIV
Idem pour IDIV division entière
+ Soustraction de l’acc A une donnée , le résultat est placé dans A sans retenue:
SUBA
+ Soustraction de l’acc A une donnée avec retenue , le résultat est placé dans A :
SBCA
+ Multiplier le contenu de A avec celui de B, le résultat est placé dans D: MUL
68HC11E2 jeu d’instruction
3. INSTRUCTIONS LOGIQUES
Et logique entre A ou B le résultat est placé dans A ou B:
ANDA ANDB
Ou logique entre A ou B le résultat est placé dans A ou
B: ORAA ORAB
Ou exclusif entre A ou B le résultat est placé dans A ou
B: EORA EORB
Complément à 1 de A ou B le résultat est placé dans A
ou B : COMA COMB
Complément à 2 de A ou B le résultat est placé dans A
ou B : NEGA NEGB
68HC11E2 jeu d’instruction
4. INSTRUCTIONS D’INCREMENTATION
DECREMENTATION ET REMISE A 0.
Incrémenter A INCA
Décrémenter B : DECB
Mise à 0 de A : CLRA
68HC11E2 jeu d’instruction
5. INSTRUCTION DE POSITIONNEMENT DES BITS DU
CCR.
Mise à 0 du bit C du CCR : CLC
Mise à 0 du bit I du CCR : CLI
Mise à 0 du bit V du CCR : CLV
Mise à 1 du bit C du CCR : SEC
Mise à 1 du bit I du CCR : SEI
Mise à 1 du bit V du CCR : SEV
68HC11E2 jeu d’instruction
6. INSTRUCTION DE ROTATION ET DE DECALAGE
Rotation à droite de A : RORA
Rotation à gauche de A : ROLA
Décalage logique à gauche de A : LSLA
Décalage logique à droite de A : LSRA
Décalage arithmétique à gauche de A : ASLA
Décalage logique à droite de A : ASRA
68HC11E2 jeu d’instruction
7. INSTRUCTIONS DE COMPARAISON
Comparer le contenu de A à une donnée : CMPA
Tester le contenu de A avec une donnée : BITA
68HC11E2 jeu d’instruction
8. INSTRUCTIONS DE TEST ET DE BRANCHEMENT.
Les instructions qui permettent d’aller exécuter des
instructions se trouvant en avant ou en arrière du
programme suite à une condition sur les indicateurs
du registre CCR ou sans condition sont:
68HC11E2 jeu d’instruction
Pour les branchements conditionnels:
• Exécuter l’instruction repérée par l’étiquette si C=0:
BCC
• Exécuter l’instruction repérée par l’étiquette si C=1:
BCS
• si Z=1: BEQ
• N V=0: BGE N V = 1 : BLT
• Z+(N V) =0 :BGT Z+(N V) =1 :BLE
• C+Z=0: BHI C+Z=1 : BLS
• N=1 BMI N=1 BPL
• Z=0 : BNE
V=0 BVC V=1 BVS
68HC11E2 jeu d’instruction
Pour les branchements inconditionnels:
Exécuter l’instruction repérée par l’étiquette sans
condition : BRA
Saut vers une instruction repérée par un étiquette:
JMP
Saut vers un sous programme : JSR
Le retour d’un sous programme se fait par: RTS
68HC11E2 jeu d’instruction
9. INSTRUCTIONS DE DE POSITIONNEMENT OU DE TEST
SUR UN OU PLUSIEURS BITS
• Mise à 0 d’un ou plusieurs bits d’une case mémoire :
BCLR
• Mise à 1 d’un ou plusieurs bits d’une case mémoire :
BSET
• Tester puis se brancher à une étiquette si un ou
plusieurs bits d’une case mémoire sont à 0: BRCLR
• Tester puis se brancher à une étiquette si un ou
plusieurs bits d’une case mémoire sont à 1: BRSET

Ces instructions n’utilisent que les 2 modes d’adressage


direct et indexé.
68HC11E2 jeu d’instruction
10. INSTRUCTIONS D’ATTENTE ET DE RETOUR
D’INTERRUPTIONS

Lorsqu’on veut programmer l’attente d’une


interruption matériel IRQ ou XIRQ , on utilise
l’instruction WAI et le retour du sous programme
d’interruption se fait à l’aide de RTI.
68HC11E2 jeu d’instruction
11. INSTRUCTIONS POUR INTERRUPTION LOGICIEL
L’instruction SWI permet de provoquer une
interruption logicielle dont l’effet est d’arrêter
l’exécution du programme en cours.
68HC11E2 jeu d’instruction
Exercice 1
On considère deux cases mémoires d’adresse respectives $0040 et
$0041 contenant chacune une donnée sur 8 bits et on désire
échanger les contenus de ces deux cases mémoires:
SOLUTION: on utilisera le mode d’adressage direct (l’octet de poids
fort des adresses est égale à $00 )
Nb1 EQU $40
Nb2 EQU $41
ORG $C000
LDAA Nb1
LDAB Nb2
STAA Nb2
STAB Nb1
SWI
END
68HC11E2 jeu d’instruction
Exercice 2
Additionner deux nombres hexadécimaux sur 8 bits se trouvant aux
adresses respectives $0040 et $0041 en utilisant le mode
d’adressage adéquat. Le résultat sera stocké à l’adresse $0042:
SOLUTION: on utilisera le mode d’adressage direct (l’octet de poids
fort des adresses est égale à $00 )
Nb1 EQU $40
Nb2 EQU $41
Res EQU $42
ORG $C000
LDAA Nb1
ADDA Nb2
STAA Res
SWI
END
68HC11E2 jeu d’instruction
Exercice 3
Additionner deux nombres hexadécimaux sur 8 bits se trouvant aux adresses
respectives $0140 et $0141 en utilisant le mode d’adressage adéquat. Le
résultat sera stocké à l’adresse $0142 sous forme décimale:
SOLUTION: on utilisera le mode d’adressage étendu(l’octet de poids fort des
adresses est différent de $00 )
Operande1 EQU $0140
Operande2 EQU $0141
Somme EQU $0142
ORG $C000
LDAA Operande1
LDDA Operande2
DAA
STAA Somme
SWI
END
68HC11E2 jeu d’instruction
Exercice 4
Multiplier deux nombres hexadécimaux sur 8 bits se
trouvant aux adresses respectives $0240 et $0241
en utilisant tous les modes d’adressages possibles.
Le résultat sera stocké aux adresses $0242, $0243.
68HC11E2 jeu d’instruction
Operande1 EQU $0240
Operande2 EQU $0241
Produit EQU $0242
ORG $C000
LDAA Operande1
LDAB Operande2
MULT
STD Produit
SWI
END
68HC11E2 jeu d’instruction
Exercice 5
Déterminer si le nombre hexadécimal stocké à
l’adresse $0140 est nul, positif ou négatif:
Si le nb est positif on stocke $01 à l’adresse $0141.
Si le nb est négatif on stocke $01 à l’adresse $0142.
Si le nb est nul on stocke $01 à l’adresse $0143.

SOLUTION: il faut initialiser les cases $0141, $0142


et $0143 par zéro ($00) avant d’effectuer le test.
68HC11E2 jeu d’instruction
Nbe EQU $0140
Nb_negatif EQU $0141
Nb_positif EQU $0142
Nb_nul EQU $0143
ORG $0141
FILL $00,03
ORG $C000
LDAA Nbe
BEQ Etiq_nul
BPL Etiq_positif
INC Nb_negatif
BRA Etiq_fin
Etiq_positif INC Nb_positif
BRA Etiq_fin
Etiq_nul INC Nb_nul
Etiq_fin SWI
END
68HC11E2 jeu d’instruction
Exercice 6
Comparer deux nombres hexadécimaux sur 8 bits se
trouvant aux adresses respectives $0440 et $0441.
Le plus grand des deux nombres sera stocké à
l’adresse $0442
68HC11E2 jeu d’instruction
SOLUTION
NB1 EQU $0440
NB2 EQU $0441
PLUSGR EQU $0442
ORG $C000
LDAA NB1
LDAB NB2
STAA PLUSGR
CMPA NB2
BGT etiq_fin
STAB PLUSGR
etiq_fin SWI
END

Vous aimerez peut-être aussi