27/04/2010 1 Cours 1 Microcontrôleur Plan du cours Pourquoi le

publicité
27/04/2010
Cours 1 Microcontrôleur
Jalil Boukhobza
LC 206
[email protected]
02 98 01 69 73
1
Plan du cours
1.
2.
3.
4.
5.
Introduction
Signaux d’E/S et ports
L’unité centrale
Les modes d’adressage
Les instructions
2
Pourquoi le 68HC11 ?
Contient un microprocesseur de la même famille que celui
précédemment vu.
Peu cher
Très utilisé:
Lecteurs de code barres
Différents programmateurs
Robots
Thermostats d’ambiance
Contrôle d’affichage dans les voitures
…
Source: http://www.arlabs.com/hc11chp.jpg
2 modes de fonctionnement et 2 modes de Test
3
1
27/04/2010
Qu’est ce qu’un µcontrôleur
Un µcontrôleur intègre dans un même circuit:
Une unité centrale ou micro processeur (CPU)
De la mémoire (RAM, ROM, EPROM, EEPROM,...)
Des interfaces d'entrées/sorties
Périph
d’E/S
CPU
mémoire
µcontrôleur
Entrée/sorties
4
Définition globale
Le 68HC11 est un µcontrôleur développé par Motorola
(devenu freescale) construit avec une unité centrale 8 bits.
Il contient:
un espace adressable (bus d'adresses de 16 bits).
Un convertisseur analogique/numérique 8 bits multiplexé sur 8 canaux.
Une interface de communication série asynchrone (RS232)
Une interface de communication série synchrone
Un timer 16 bits avec 3 entrées de capture et 4 sorties de comparaison
plus 1 E/S programmable
Plusieurs sources d'interruptions (internes et externes)
Plusieurs broches d'E/S polyvalentes réparties sur 5 ports.()
(DMA)
(Coprocesseur mathématique)
5
Source: « Microcontrôleur 68HC11 » C. Tavernier, Dunod 97
Structure globale
6
2
27/04/2010
68HC11 en bref
Mémoire subdivisée au max en 3 blocs:
RAM: mémoire vive d’au moins 256 octets et
toujours présente.
ROM: peut être présente ou absente mémoire
destinée aux programmes
ROM: programmable par masque lors de la fabrication
EPROM: programmable électriquement
OTPROM: non effaçable (One Time PROM)
EEPROM: effaçable plusieurs fois
EEPROM: destinée aux données
7
68HC11 en bref -2
Unité centrale entourée d’un certain
nombre de ports parallèles:
Port A, B, C, D, E: bidirectionnels ou uni
directionnels
Certains ports sont partagés avec des ressources
internes et donc ne sont pas toujours accessibles: ex.
port E commun avec le convertisseur
Analogique/Digital
Entrées séries dispo:
SPI: Serial Peripheral Interface (synchrone)
SCI: Serial Communication Interface (asynchrone)
8
68HC11 en bref -3
Ensemble de Timers disponible:
Plusieurs timers évolués
Accumulateur d’impulsions
Une horloge temps réel
Un chien de garde (COP Computer Operating Properly):
destiné à surveiller le fonctionnement du µcontrôleur
Convertisseur analogique digital à 8 entrées
2 modes de fonctionnement:
Mode « single chip »: fonctionne seul
Mode « expanded »: connecté à des circuits externes,
dans ce cas le port B et C se transforment en lignes
d’adresses et de données.
9
3
27/04/2010
Source: « Microcontrôleur 68HC11 » C. Tavernier, Dunod 97
Famille du 68HC11
10
Famille du 68HC11 -2RAM
ROM
EPROM
EEPROM
TIMER
A/D
D/A
SCI,SPI
PWM
DMA
COPRO
PLL
PORTS
BROCHES
Famille A
256
0 à 8k
0
0 à 512
X
8 voies
Famille D
….
192 à 256
0 à 4K
0
0
X
0 ou 4 voies
Famille M
1280
32K
0
640
1+1
1+1
2
1+2
4
X
X
A=>E
48,52
A=>H ou A=>D
64, 68 ou 40, 44
A=>H ?
80 ?
8voies
11
Signaux d’E/S
Le 68HC11 est inclus dans un boitier a plusieurs broches. En plus des
E/S des ports, il possède plusieurs broches selon les versions:
VSS et VDD: alimentation VDD=5V, VSS=0.
XTAL et EXTAL: connexion d'un quartz ou d'une horloge externe.
E : sortie d'horloge.
IRQ et XIRQ: entrées d'interruptions externes.
VRH et VRL: tension de référence pour la conversion A/N.
VRH<VDD.
MODA et MODB: mode de fonctionnement.
RESET signal d'initialisation.
STRA et STRB: en mode normal (monopuce), signaux de
communication avec une interface parallèle.
12
4
27/04/2010
Source: « Microcontrôleur 68HC11 » C. Tavernier, Dunod 97
Structure globale
13
Port d’E/S
PA0-PA7: entrées: PA0-PA1-PA2 et
sorties PA3-PA4-PA5-PA6, et
entrée/sortie PA7. Lignes partagées
avec celles du Timer.
PB0-PB7: sorties parallèles en mode
«mono puce » et @ de poids forts en
mode étendu
PC0-PC7: E/S parallèles à usage
général en mode « mono puce » et
bits de poids faibles + données en
mode étendu. STRA indique si @ ou
données et STRB indique si lec/Ecr
PD0-PD5: E/S parallèle du port D,
communes avec les ports série (SPI
et SCI)
PE0-PE7: Entrées du port E partagée
avec les entrées du convertisseur
analogique/digital
14
Structure globale
Source: « Microcontrôleur 68HC11 » C. Tavernier, Dunod 97
15
5
27/04/2010
Port d’E/S -2CPU
Accum. Timer
de pulses 16bits
Chien
de garde
Expansion de bus
PortA
Strobe /
Handshake
A/D
Famille A
Port E
SP1
SCI
Port D
Port B
Série sync et async
Port C
16
Fonctionnement des ports
Le port A est destiné aux E/S « parallèles »
Mais aussi aux timer, pulse accu,
PortA
(en simplifiant)
$1000
Le portB est en sortie parallèle (en mode monopuce)
$1004
PortB
17
Fonctionnement des ports -2
Le port C est destiné aux E/S. Chaque bit peut être configuré par
le bit correspondant de DDRC : 1=> sortie , 0 =>entrée
DDRC
$1007
$1003
PortC
Le portD est destiné soit aux E/S (6bits de poids faible contrôlés
par DDRD) Soit à SPI et SCI
DDRD
$1009
PortD
$1008
STRB STRA
18
6
27/04/2010
L’unité centrale
Modèle 8 bits
Peut faire des opérations sur 16bits
De la même famille que le 6801
Processeur CISC
2 accumulateurs A et B de 8 bits
A et B concaténé donne le registre D (Double) et donc un
registre 16bits
2 registres d’index X et Y
Un registre pointeur de pile 16bits
Un registre PC
Un registre CCR
19
Les registres
2 accumulateurs A et B de 8 bits
Opération arithmétiques et
logiques
Indépendants
Accumulateur « virtuel » D
Registres d’index X et Y pour
l’adressage (rappel; adressage
avec déplacement du 68000).
SP ≈ (A7 du 68000)
CCR: registre de code de
conditions
20
Le registre CCR
S
X
H
I
N
Z
V
C
N: nombre résultant négatif
Z: nombre résultat = zéro
V: dépassement de capacité
C: nombre résultant ayant une retenue
H: Demi retenue pour certains type d’instructions
I: masque d’interruption, interdit les interruptions …
« masquables »
S: stop disable, mis à 1 pour desactiver l’instruction « stop »
(qui suspend l’horloge)
X: X Interrupt Mask, comme le bit I mais sur les interruptions
sur l’entrée XIRQ.
21
7
27/04/2010
Le 68HC11 Architecture
(globale)
Mémoires
X,Y 16bits
SP 16bits
PC 16 bits
Interface
Mémoire
et E/S
A,B
RI
UAL
S,X,H,I, N, Z, V,C.
Unité de
Contrôle
E/S et
timers
22
Mapping mémoire
Non
utilisé
Non
utilisé
23
Les modes d’adressage
6 modes d’adressage
1 seul espace adressable
De $0000 à $FFFF (64Ko)
Registres des ressources internes (non
ceux du processeur) accessibles via des
adresses en mémoire
Pas de segmentation (espace linéaire)
Pas de virtualisation
24
8
27/04/2010
Modes d’adressage -2
Adressage Inhérent
Adressage immédiat
Adressage direct
Adressage étendu
Adressage indexé
Adressage relatif
25
Adressage Inhérent (ou implicite)
Il n’y a pas d’adresse effective dans ce mode.
L’instruction se suffit à elle-même
N’est pas à proprement parler un mode
d’adressage.
Exemple d’instruction:
ABA (ajoute A et B et stocke le résultat dans A)
INCB (incrémentation de B)
DEX (décrémentation de X)
…
26
Adressage immédiat
Adresse effective=adresse suivant l’adresse
contenant le code de l’instruction par conséquent
la donnée à manipuler suit immédiatement
l’instruction.
Donnée peut être sur 8 ou 16 bits
Exemple:
LDAA #$55 (chargement du registre 1 avec la valeur hexa
55)
CST
EQU $1234
LDX
#CST
LDD #7 (chargement du registre D avec la valeur 7)
27
9
27/04/2010
Adressage direct
1er « vrai » mode d’adressage
Instruction suivie d’un octet non signé représentant
l’adresse effective de la donnée à manipuler.
Adresse codée sur 1 octet: de $00 à $FF 256
premiers octets de l’espace d’adressage
Exemple:
LDAA
STAA
CMPA
LDD
$01
$02
$25
$01
28
Adressage étendu
Évolution de l’adressage direct permettant d’atteindre
n’importe quelle adresse mémoire.
Autorise un codage de l’adresse effective sur 2 octets: de
$0000 à $FFFF
Exemple:
LDAA
STAA
CMPA
LDD
$0101
$0802
$2525
$0201
NB: Utiliser l’adressage direct quand c’est possible
Certains assembleurs émettent des « warnings » sinon
29
Adressage indexé
Souple et puissant
Fait intervenir (au max) 2 éléments:
Contenant des registres d’index (X et Y)
Un déplacement (offset)
2 possibilités:
Adressage indexé avec déplacement nul
X ou Y contiennent l’adresse effective
Exemple:
LDD
CMPA
0,X
,X (autre écriture)
Adressage indexé avec déplacement non nul
L’adresse effective est la somme du contenu du registre d’index et de l’octet
non signé qui le précède (de $00 à $FF)
Exemple:
LDD
ADDD
4, X
$25,Y
30
10
27/04/2010
Adressage relatif
Utilisé uniquement pour les instructions de saut et de branchement
L’adresse est spécifiée sous forme d’un déplacement
Ajouté à la valeur actuelle du PC
PC pointe sur l’instruction suivante
L’adresse effective= @instr + 2 + déplacement:
Déplacement codé sur 1 octet signé
De -128 à +127
Exemple:
ICI
EQU
LDA
STA
BEQ
LDY
BRA
LABAS
*
#$AA
$1000
ICI
0,X
LABAS
0028
0028
002a
002d
002f
0032
86
b7
27
1a
20
aa
10 00
f9
?
ee 00
f6
?
31
Adressage «bit »
Pas un mode d’adressage à proprement parler.
Manipulation de bits individuels dans les registres.
2 sous modes:
Mode positionnement de bit
INSTRUCTION
OPERANDE
MASQUE
Le « masque » indique les bits à manipuler (en immédiat),
« operande » peut être en adressage direct ou indexé
Ex: BCLR
PORTB %00110001 (positionne à 0 les bits 0,
4 et 5 du portB).
Mode test de bit et branchement
INSTRUCTION
OPERANDE
MASQUE
SAUT
Ex: BRCLR TFLG1 $80
BOUCLE (test le bit 7 du
registre TFLG1 et branche à BOUCLE si ce bit est nul
32
Le jeu d’instructions
1- Chargement et stockage
Les instructions de l’UAL nécessitent généralement
2 opérandes dont une, au moins, se trouve dans un
registre interne.
Les instructions de chargement permettent de
transférer des données de la mémoire vers les
registres
Les instructions de stockage permettent de faire
l’inverse.
33
11
27/04/2010
Le jeu d’instructions
1- Chargement
But: charger un registre avec une valeur
Registres concernés: A, B (8 bits), D, X, Y, SP (16
bits)
Instructions: ldaa, ldab, ldd, ldx, ldy, lds
Modes d’adressage:
Immédiat, direct, étendu, indexé.
34
Le jeu d’instructions
1- transfert entre registres
Le 68HC11 possède un certain nombre
d’instructions de transfert entre les registres.
Instructions sans arguments codés sur 1 octet
(adressage inhérent ou implicite)
Les instructions
tab: transfert du contenu de l’accumulateur A vers B
tba: B vers A
tap: transfert du registre A vers le registre de condition
CCR
tpa: CCR vers A
tsx: transfert le contenu du pointeur de pile +1 vers le
registre d’index X.
35
Le jeu d’instructions
1- transfert entre registres -2
tsy: transfère le contenu du pointeur de pile SP +1
dans le registre d'index Y.
txs: transfère le contenu du registre d'index X -1
dans le pointeur de pile SP.
tys: transfère le contenu du registre d'index Y-1
dans le pointeur de pile SP.
xgdx: échange le contenu de D et de X.
xgdy: échange le contenu de D et de Y.
36
12
27/04/2010
Le jeu d’instructions
1- stockage
But: stocker en mémoire le contenu d’un registre
Registres concernés: A, B (8 bits), D, X, Y, SP (16
bits)
Instructions: staa, stab, std, stx, sty, sts
Modes d’adressage:
direct, étendu, indexé.
37
Le jeu d’instructions
2- Instructions de traitement
Le traitement des données est effectué par l’UAL. Il
s'agit d'opérations arithmétiques et logiques.
Les instructions de traitement peuvent être
classées selon différents critères. La classification
qui a été choisie ici est la suivante :
Opérations
Opérations
Opérations
Opérations
sur deux opérandes dont un en mémoire.
sur deux opérandes entre registres.
sur un seul opérande.
diverses.
38
Le jeu d’instructions
2- Opération sur 2 opérandes (une en
mémoire)
Modèle de l’opération: R=fn(R, mem), ou R est un registre.
Modes d’adressage possibles (pour l’opérande en mémoire):
Immédiat, direct, étendu, indexé.
Exemples:
adda #20
cpy $02
subb #$FA
anda 0, X
(additionne le contenu A à la valeur décimale
20 et stocke dans A)
(compare la valeur de Y avec le contenu de la
mémoire à l’@ $02). Les indicateur N, V, Z et
C sont mis à jour.
( soustrait de B la valeur héxa FA et stocke le
résultat dans B)
(effectue un ET bit à bit entre le contenu de A
et le contenu de la mémoire à l’@ pointée par
X)
39
13
27/04/2010
Le jeu d’instructions
2- Opération sur 2 opérandes (une en
mémoire)
Fonctions
Opérations
Addition sans retenue
R=R+Mem
instructions
adda, addb, addd
Addition avec retenue
R=R+Mem+C
adca, adcb
Soustraction sans
retenue
R=R-Mem
suba, subb, subd
Soustraction avec
retenue
R=R-Mem-C
sbca, sbcb
Comparaison
R-Mem
cmpa, cmpb, cpd, cpx
ET bit à bit
R=R.Mem
anda, andb
OU bit à bit
R=R+Mem
oraa, orab
OU exclusif bit à bit
R=R⊕Mem
eora, eorb
Test bits
R.Mem
bita, bitb
40
Le jeu d’instructions
2- Opération sur 2 opérandes (dans des
registres)
Fonctions
Opérations
Instructions
Addition A et B
A=A+B
aba
Soustraction de B de A
A=A-B
sba
Comparaison de A et
de B
A-B
cba
Multiplication
A=A.B
mul
Addition des poids
faibles de X avec B
X=X[0,7]+B
abx
Addition des poids
faible de Y avec B
Y=Y[0,7]+B
aby
Division entière
D/X X<quotient et
D<Reste
Idiv
41
Le jeu d’instructions
2- Instructions à un seul opérande
Modèle de l’opération: R=fn(R) ou
Mem=fn(Mem).
Modes d’adressage possibles:
Étendu
Indexé
Registres concernés: A, B et D et pour
certaines instructions X, Y et SP.
42
14
27/04/2010
Le jeu d’instructions
2- Instructions à un seul opérande
Fonctions
Opérations
Instructions
Décalage logique ou
arithmétique, gauche ou
droite
Décalage sans ou avec
considération du bit de
signe
asla, aslb, asl, asld
lsla, lslb, lsl, lsld, asra,
asrb, asr, lsra, lsrb, lsr,
lsrd
Rotation gauche ou
droite
rola, rolb, rol, rora, rorb,
ror
Mise à zéro
Mem=0 ou R=0
clra, clrb, clr
Décrémentation
Mem=Mem-1 ou R=R-1
deca, decb, dec, des,
dex, dey
Incrémentation
Mem=Mem+1 ou R=R+1
inca, incb, inc, ins, inx, iny
Négation
Mem= 0-Mem ou R=0-R
nega, negb, neg
Complément à 1
Mem= $FF-Mem ou
R=$FF-R
coma, comb, com
Comparaison à 0
Mem-0 ou R-0
tsta, tstb, tst
43
Le jeu d’instructions
3-Manipulations de bits
En plus des fonctions logiques, 2 instructions peuvent modifier la valeur de
certains bits d’une donnée.
bset: Cette instruction permet de mettre a 1 les bits d'une donnée d
correspondants aux bits à 1 d'un masque m. Elle supporte l'adressage direct
sur 8 bits (limité aux adresse $00 a $FF) et indexé. Elle réalise la fonction d +
m. Elle nécessite deux opérandes: l'adresse de la donnée et le masque (sur 8
bits).
Syntaxe: bset adresse masque ou
bset offset,X masque
bclr: cette instruction permet de mettre à 0 les bits d'une donnée d
correspondants aux bits a 1 d'un masque m. Comme l'instruction précédente,
elle supporte l'adressage direct et indexé et nécessite deux opérandes. Elle
réalise la fonction d.m(barre).
Syntaxe: bclr adresse masque ou
bclr offset,X masque
44
Le jeu d’instructions
4-La division
2 instructions pour la division:
idiv (Division entière): réalise la division entière (nonsigné) sur 16 bits du contenu de D (numérateur) par le
contenu de X (dénominateur).
Le résultat de la division (quotient) est mis dans X et le
reste dans D.
fdif (Division fractionnaire): D doit être inférieur à X. Après
l'opération, le résultat dans X est interprétable comme un
réel inférieur à 1 codé avec 16 bits après la virgule
Les 2 instructions utilisent un adressage
implicite/inhérent
45
15
27/04/2010
Le jeu d’instructions
4-La division (exemples)
idiv: Soit 320 le contenu de D (soit $0140) et soit 30 le
contenu de X (soit $001E).Après idiv, X contiendra 10 (soit
$000A) qui est le quotient de 320/30 et D contiendra la valeur
20 ($14) reste de la division entière (320=10x30+20)
fdiv: Avec D=30 et X=40 après l'instruction fdiv, D contiendra
la valeur 0 et X la valeur $C000 soit en binaire %1100 0000
0000 0000 qu'il faut interpréter comme un nombre en virgule
fixe égal à 2-1 + 2-2 = 0.5 + 0.25 = 0.75. Cela correspond a la
partie fractionnaire de la division de 30 par 40 (30/40=0.75).
46
Le jeu d’instructions
5.instructions de branchement
codées sur deux octets et utilisent un mode d'adressage dit relatif.
Condition
Instruction
Condition
instruction
C=1
bcs, blo
C=0
bcc, bhs
V=1
bvs
V=0
bvc
N=1
bmi
N=0
bpl
Z=1
beq
Z=0
bne
C+Z=1
bls
C+Z=0
bhi
N⊕V =1
blt
N⊕V =0
bge
Z+(N⊕V)=1
ble
Z+(N⊕V)=0
bgt
1
bra
0
brn
47
16
Téléchargement