Cours HC11
Cours HC11
Cours HC11
PC
bus d’adresses
IUP TMM - L3 Architecture d’un micro-contrôleur UPS IUP TMM - L3 Architecture d’un micro-contrôleur
IUP TMM - L3 Architecture d’un micro-contrôleur UPS IUP TMM - L3 Codage des informations
Des registres spécialisés situés dans l’espace adressable (pas d’instructions Exemple: 1011b= 1 × 23 + 0 × 22 + 1 × 21 + 1 × 20 (soit 11 en décimal)
spéciales) permettent de lire où d’écrire des valeurs sur les ports et de programmer ➵ base 16 (hexadécimale) 16 symboles {0,...,9 , 1, A,..., F}
les interfaces (par exemple la cadence de transmission de la ligne s érie).
Poids: puissance de 16. Exemple: 3Ah= 3 × 161 + 10 × 160 (soit 58 en décimal)
IUP TMM - L3 Codage des informations UPS IUP TMM - L3 Codage des informations
43 21 1 b0
Ex: 2Ch ➟ 2 × 16 + 12 =44d
21 10 1 b1
– conversion décimal ➟ hexadécimal: Exemple: N (A) = 43 10 5 0 b2
5 2 1 b3
On effectue des divisions successives par 16.
2 1 0 b4
Ex: 44/16=2, r=12, 2/16=0, r=2 donc 44d ➟ 2Ch
1 0 1 b5
0000 0 16 0 1000 8 8 -8
i=0
0001 1 15 1 1001 9 7 -7
Conséquence: si an−1 = 1, Z(A) est un nombre négatif quel que soient les 0010 2 14 2 1010 10 6 -6
valeurs des autres bits (a0 à an−2 ). Inversement, si an−1 = 0, Z(A) est positif. 0011 3 13 3 1011 11 5 -5
0100 4 12 4 1100 12 4 -4
➯ Le signe d’un entier relatif est donné par la valeur du bit le plus significatif de son 0101 5 11 5 1101 13 3 -3
IUP TMM - L3 Codage des informations UPS IUP TMM - L3 Codage des informations
code 0 1 2 3 4 5 6 7 8 9 A B C D E
Le principe consiste à fixer la position de la virgule et à donner aux bits à droite de
0x00 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT NP CR SO
cette position un poids en puissance de 2 négative: 2−1 , 2−2 , ...
0x10 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS
Soit A le mot code représentant le réel X(A) sur n bits dont m après la virgule: 0x20 SP ! ” # $ % & ’ ( ) * + , - .
IUP TMM - L3 Codage des informations UPS IUP TMM - L3 Codage des informations
Le 68HC11E2 est inclus dans un boitier à 52 broches. En plus des 38 E/S des
III-1 Présentation
ports, il possède 14 broches:
Le 68HC11 série E est un micro-contrôleur développé par Motorola (devenu ➯ VSS et VDD: alimentation VDD=5V, VSS=0.
freescale) construit autour d’une unité centrale 8 bits. Il possède: ➯ XTAL et EXTAL: connection d’un quartz ou d’une horloge externe.
– un espace adressable de 64 Ko (bus d’adresses de 16 bits). ➯ E et 4XOUT: sorties d’horloge.
– Un convertisseur analogique/numérique 8 bits multiplexé sur 8 canaux. ➯ IRQ et XIRQ: entrées d’interruptions externes.
– Une interface de communication série asynchrone (RS232) ➯ VRH et VRL: tension de référence pour la conversion A/N. VRH<VDD.
– Une interface de communication série synchrone ➯ MODA et MODB: mode de fonctionnement.
– Un timer 16 bits avec 3 entrées de capture et 4 sorties de comparaison plus 1
➯ RESET signal d’initialisation.
E/S programmable
➯ STRA et STRB: en mode normal (monopuce), signaux de communication avec
– 22 sources d’interruptions (internes et externes)
une interface parallèle.
– 38 broches d’E/S polyvalentes réparties sur 5 ports.
0 0
3 entrees 1 1 7 A 0 7 B 0
2 2
1 E/S 3 3 8 entrees 15 D 0
4 Port A Port E 4 ou C A/N
3 sorties 5 5
6 6 15 IX 0
1 E/S 7 7
0 0 15 IY 0
1 1
2 2 6 E/S
8 sorties 3 3 15 SP 0
4 Port B Port D 4
5 5
6 Port C 6
7 7 15 PC 0
0 1 2 3 4 5 6 7
7 CCR 0
8 E/S
Registres
64 Octets ➵ Instructions de chargement/rangement Pour être traitées, les données
$103F doivent être chargées dans les registres et les résultats stockés en mémoire.
IV-Jeu d’instructions
Adressage immédiat
IV-1 Instructions de chargement/rangement ➵ la valeur est codée à la suite de l’instruction dans le programme.
Les opérations sur les données réalisées par l’UAL du 68HC11 nécessitent en
général 2 opérandes dont 1 au moins doit être contenu dans un registre interne du ldaa PC
A valeur
micro-contrôleur.
Objectif: charger un registre avec une valeur. ➵ Adressage direct: l’octet suivant l’instruction représente l’adresse mémoire ou est
stockée la valeur. L’accès est limitée aux adresses $0000 à $00FF.
Registres concernés:
➵ Adressage étendu: comme l’adressage direct mais l’adresse est codée sur les
A, B (8 bits) D, IX, IY, SP (16 bits) deux octets suivant l’instruction (poids fort d’abord).
Instructions: ldaa, ldab, ldd, ldx, ldy, lds
valeur
Pour un regitre 8 bits la valeur est codée sur un octet, pour un registe 16 bits, elle
est codée sur deux octets en commençant par les poids forts.
Le 68HC11 possède des instructions de transferts entre registres que l’on peut Objectif: ranger le contenu d’un registre en mémoire.
Ce sont des instructions sans arguments (codées sur 1 octet). On parle A, B (8 bits)
d’adressage implicite. D, IX, IY, SP (16 bits)
Instructions: staa, stab, std, stx, sty, sts
➵ tab Transfère le contenu de l’accumulateur A dans l’accumulateur B. B←A.
➵ tba Transfère le contenu de l’accumulateur B dans l’accumulateur A. A←B. Modes d’adressage:
Exemples:
Opérations sur 2 opérandes dont 1 en mémoire
– adda #10
Additionne le contenu de A avec la valeur décimale 10. Le résultat est stocké
Opérations de la forme: registre ← f(registre,mémoire)
dans A.
Modes d’adressage possibles (pour l’opérande en mémoire):
– subb $F0
Soustrait au contenu de B la valeur stockée à l’adresse $00F0. Le résultat est
– immédiat,
stocké dans B.
– direct,
– cpx #$1000
– étendu,
Compare la valeur contenue dans IX avec la valeur $1000. Seul les indicateurs
– indexé.
sont mis à jour (N, Z, V et C). Le résultat n’est pas stocké.
– anda 0,X
Registres: accumulateurs A,B et D et registres IX et IY pour l’instruction de
comparaison. Effectue un ET bit à bit entre le contenu de A et celui de l’adresse mémoire
donnée par X. Le résultat est stocké dans A.
Exemples:
– clra
Exemples:
Met 0 dans le registre A.
– bset $FD %00001000
– inx
Met à 1 le bit 3 de l’adresse mémoire $00FD.
Ajoute 1 au contenu de IX.
– bclr 0.X %00001000
– nega
Met à 0 le bit 3 de l’adresse mémoire contenue dans le registre IX.
Remplace A par son complément à 2.
– tst $1000 Remarque: la notation %xxxxxxxx permet de représenter un nombre sous forme
Compare le contenu de l’adresse $1000 avec 0. Seuls les indicateurs Z et N binaire.
sont affectés.
Manipulations de bits
Division
Deux instructions du 68HC11 permettent de modifier la valeur d’un ou plusieurs bits
d’une donnée (en plus des fonctions logiques). ➯ L’instruction idiv réalise la division entière (non-signé) sur 16 bits du contenu
de D (numérateur) par le contenu de IX (dénominateur).
➯ bset Cette instruction permet de mettre à 1 les bits d’une donnée d
correspondants aux bits à 1 d’un masque m. Elle supporte l’adressage direct (limité Rappel: la division entière de n par d produit un quotient q et un reste r tels que:
aux adresse $00 à $FF) et indexé. Elle réalise la fonction d + m. Elle nécessite n/d = q × d + r.
deux opérandes: l’adresse de la donnée et le masque (sur 8 bits). Le résultat de la division (quotient q ) est mis dans IX et le reste r dans D.
Branchement conditionnel
Exemples:
Calcul du saut
IV-3 Instructions de branchement
➠ Le saut représente le nombre, codé en complément à 2, à rajouter au pointeur
de programme PC pour que celui-ci contienne l’adresse de la prochaine
Les instructions de branchement permettent de réaliser des traitements
instruction à exécuter.
conditionnels (du type “si condition alors faire”) et d’implémenter des structures de
➠ L’instruction de branchement est codée sur 2 octets et au moment de son
boucles (“faire tant que...”).
exécution PC contient l’adresse de l’instruction suivante en mémoire. Un saut
Elles sont codées sur deux octets et utilisent un mode d’adressage dit relatif. Le de 0 revient donc à exécuter l’instruction suivante (donc à ne pas faire de saut!)
deuxième octet de l’instruction représente un déplacement (saut) sous forme d’un ➠ En pratique le langage d’assemblage permet d’éviter tout calcul, gràce à
entier signé sur 8 bits (-128 à +127). l’utilisation d’étiquettes. Il suufit de mettre une étiquette devant l’instruction ou
Principe: une condition, fonction de l’instruction de branchement, est calcul ée à l’on souhaite se brancher et d’indiquer cette étiquette dans l’instruction de
partir des indicateurs du CCR: N, V, C et Z. Il s’agit d’une expression bool éenne. Si branchement. Exemple:
celle-ci est vrai alors le branchement a lieu et le programme continue à une adresse bra suite
calculée à partir de l’octet qui suit le code de l’instruction de branchement. Si le ...
résulat est faux, alors le programmme continue en séquence à l’instruction suivante. suite ...
...
Comparaisons et branchements
Implémentation de l’alternative simple
Si l’instruction qui précède l’instruction de branchement est une comparaison
(cmpa,cmpb, cpd, cpx, cpy) ou une soustraction (suba, subb, "faire si A=10"
subd, sba) de type R−M, on peut utiliser les instructions suivantes en fonction Organigramme Traduction
du contexte, signé ou non-signé:
cmpa
Non Oui
instruction instruction A=10? #10
bne
test nombre signés nombres non-signés
suite
traitement
R=M beq beq
R6=M bne bne traitement
Double alternative
"si A=10, faire, sinon faire"
Organigramme Traduction
cmpa
Non Oui
A=10? #10
beq
trait1
trait. 2 trait. 1 -
trait. 2
bra
suite
trait1
trait. 1
suite
Structure de boucle
"faire tant que A=10"
Organigramme Traduction
cmpa encore
Non Oui
A=10? #10
bne
traitement suite -
traitement
bra
encore
suite
Pile
Pour qu’un sous-programme revienne, quand il se termine, à l’instruction suivant
son appel il faut conserver l’adresse de retour. ➱ C’est le rôle de la pile.
IV-4 Sous-programmes, Pile, IT, ...
La pile est gérée par le registre SP. Elle est stockée n’importe ou en mémoire et SP
contient l’adresse de son sommet. Elle croit vers les adresses basses.
Les autres instructions du micro-contrôleur intégrent les instructions permettant la
programmation modulaire: Exemple pour un sous-programme (instruction jsr)
$FFFF
– sous-programmes
– pile SP (PC+3)l SP
(PC+3)h
– interruptions SP
Rem: l’adresse de la pile doit être fixée au début du programme (instruction lds).
IUP TMM - L3 Sous-programmes, pile, IT et autres UPS IUP TMM - L3 Sous-programmes, pile, IT et autres
Elle possède deux différences avec un sous-programme: Chaque source d’interruption possède une entrée spécifique dans le vecteur
– elle peut interrompre le programme n’importe ou et doit donc provoquer la adresse source adresse source adresse source
emplacement prédéfini de la mémoire). $FFEE-EF TIC1 $FFF0-F1 Int. T.R. $FFF2-F3 IRQ
$FFF4-F5 XIRQ $FFF6-F7 swi $FFF8-F9 code op. ill.
IUP TMM - L3 Sous-programmes, pile, IT et autres UPS IUP TMM - L3 Sous-programmes, pile, IT et autres
Instructions diverses
V-Entrées/Sorties Port A
Le port A posséde 3 entrées (PA0 à PA2), 3 sorties (PA4 à PA6) et deux broches
V-1 Entrées/Sorties logiques
d’E/S programmables en entrée ou en sortie (PA3 et PA7).
Les entrées/sorties logiques sont aussi appelées E/S parallèles, digitales où Registre de données:
numériques. Elles correspondent aux ports A à E du 68HC11E2 qui en posséde 38. PORTA: PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 $1000
Une fois leur tàche effectuée, ces unités périphériques mettent à 1 un indicateur
(lèvent un drapeau) et peuvent interrompre le programme en cours si on les y
Port E autorise.
V-3 Timer
La période se rêgle avec les bits RTR1 et RTR0 de PACTL Elle dépend de la TCNT(l): 7 6 5 4 3 2 1 0 $100F
fréquence d’horloge E=Q/4. Remarque: Le registre TCNT est à lecture seule.
Le bit RTII de TMASK2 doit être mis à 1 pour autoriser l’IT et le bit RTIF de TFLG2
Réglage de la période
doit être réinitialisé dans la fonction d’IT. L’adresse du sous-programme d’IT doit être Q=4.9152 Mhz
stockée en: $FFF0-$FFF1 (vecteur d’IT). PR1 PR0 diviseur résolution débordement
0 0 1 0.813 µs 53.3ms
PACTL: RTR1 RTR0 $1026
0 1 4 3.25 µs 213.3 ms
TMASK2: RTII $1024 1 0 8 6.52 µs 426.6 ms
Programmation
Choix du type d’évènement:
Fonction capture TCTL2: EDG4B EDG4A EDG3B EDG3A EDG2B EDG2A EDG1B EDG1A $1021
Principe: Un événement (front d’un signal) sur une broche externe provoque la 0 0 inactif
0 1 front montant
recopie du contenu du timer TCNT dans un registre. Ceci permet de “dater” des
1 0 front descendant
événements. Cet événement met par ailleurs un drapeau à 1 et peut générer une
1 1 front quelconque
interruption.
Registres de capture: TIC1: $1010-$1011, TIC2: $1012-$1013, TIC3: $1014-$1015,
Le 68HC11 possède 4 entrées de captures: IC1 (broche PA2), IC2 (PA1), IC3 (PA0),
TIC4: $101E-$101F.
IC4 (PA3). A chaque entrée correspond un registre 16 bits TICx, x de 1 à 4. Drapeaux:
TFLG1: IC4F IC1F IC2F IC3F $1023
L’événement provoquant la capture est programmable: front montant, front
descendant ou front quelconque. Masques d’interruption:
TMSK1: IC4I IC1I IC2I IC3I $1022
Autres registres: bit 3 de PACTL à 0 pour utiliser IC4 et TMSK2 pour régler la
résolution du timer TCNT.
TCNT Principe: Quand la valeur du timer TCNT devient égale à la valeur d’un registre
$FFFF TOCx, une action est effectuée sur la broche OCx. Cette action peut-être une mise
TIC1 à 0, une mise à 1 ou un changement d’état.
Ceci permet de générer des signaux périodiques sur certaines broches du 68HC11.
TIC1
Par ailleurs, l’action sur la sortie s’accompagne de la levée d’un drapeau (OCxF) qui
$0000 t
periode peut générer une interruption si celle-ci est autorisée (bit OCxI à 1).
IC1
Le 68HC11 possède 5 sorties de comparaisons: OC1 (PA7), OC2 (PA6), OC3
5V
(PA5), OC4 (PA4) et OC5(PA3). Le fonctionnement de TOC1 est un peu particulier.
0V Il permet de d’affecter les 5 broches de sortie (PA3 à PA7) à chaque comparaison.
evenement evenement
sur IC1 sur IC1
Génération d’un signal périodique sur la broche PA6 (OC2). Changement d’état de Choix des broches affectées: pour affecter la broche PAx, il faut mettre à 1 le bit
la sortie à chaque comparaison. OC1Mx.
OC1M: OC1M7 OC1M6 OC1M5 OC1M4 OC1M3 $100C
TCNT
$FFFF
Choix de la valeux mise sur PAx (si OC1Mx=1) à chaque comparaison valide de
TOC2
TOC1 avec TCNT:
OC2
Autres registres:
5V
bit 3 de PACTL à 1 pour utiliser OC5 (PA3 en sortie)
0V
TMSK2 pour régler la résolution du timer TCNT.
Registres de comparaison (16 bits): TOC1: $1016-17, TOC2: $1018-19, TOC3: L’accumulateur d’impulsions est un registre 8 bits qui possède deux fonctions:
$00 t
Drapeaux et masques d’interruption:
TFLG1: OC1F OC2F OC3F OC4F OC5F $1023
PA7
Resultat
conversion
$00 t
FF
horloge interne, f=E/64
PA7
00 tension
Vrh
(5V)
Registres de programmation
Registre de données: PACNT en $1027
Conversion Numérique/Analogique
PACTL: DDRA7 PAEN PAMOD PEDGE $1026 VREF
DDRA7: direction de PA7, a mettre à 0 (en entrée). PAEN: mettre à 1 pour activer 2R
1
an−1 0
les fonctions de l’accumulateur. PAMOD: 0 en compteur d’événements, 1 en 2n−1 I R 2n−1 I
1
accumulateur d’impulsions. PEDGE: en compteur d’événements: 0: compte les 2R
an−2 0 I(A)
fronts descendants, 1 les fronts montants. En accu. d’impulsions: 0 compteur actif 2n−2 I
PAII et PAIF: masque et drapeau d’IT déclenchée par les fronts de PA7
(fonctionnement en accumulateur d’impulsions). Vecteur d’IT: $FFDA-DB.
+ Déclenchement de
V Logique de – ADPU:
la conversion
- commande
– convertisseur inactif
Registre des poids – convertisseur actif.
convertisseur
– CSEL: choix de l’horloge pour la conversion:
numérique/
analogique – 0: horloge E,
– 1: circuit RC interne.
– les résultats des 4 conversions sont stockés dans les registres 8 bits ADR1 à – 1: Conversions effectuées en permanence. ADR1 à ADR4 sont mis à jour
ADR4 (adresses: $1031 à $1034). après chaque conversion.
– le convertisseur doit être activé par mise à 1 du bit ADPU du registre OPTION – MULT:
avant toute conversion – 0: les 4 conversions sont faites sur un seul canal (choisi par CC-CA).
– les séries de conversions peuvent se faire en continu ou pas – 1: une conversion sur chacun des 4 canaux d’un groupe. Le groupe est fix é
par CC.
– l’écriture d’une valeur dans le registre ADCTL initialise le drapeau de fin de
conversion (CCF) à 0 et redémarre une nouvelle série de conversion. – CD, CC, CB, CA: choix de l’entrée ou du groupe d’entrées.
Registres:
Données: SCDR ($102F)
V-5 Communication série et 68HC11 Contient les 8 premiers bits de la donnée reçue ou de la donnée à transmettre.
Contrôle:
Deux unités de communication série:
SCCR1 ($102C)
➯ SCI Serial Comunication Interface. Fixe le mode de tranmission (nombre de bits), le mode de réveil en réception et
Communication série de type RS232. Utilisée pour le chargement des contient le 9ième bit éventuel.
programmes. SCCR2 ($102D)
➯ SPI Serial Peripheral Interface. Communication synchrone entres des 68HC11 Activation du récepteur ou de l’émetteur. Masques d’IT.
ou des périphériques synchrones (controleurs LCD, convertisseurs N/A s érie,
SCSR ($102E)
horloges...)
Registre de statut (drapeaux).
BAUD ($102B)