Le µcontrôleur 68HC11
hc11+regétat.doc 1/10
Notion de µprocesseur :
Un µprocesseur est une structure intégrée capable d'exécuter une suite d'actions
suivant un ordre prédéterminé écrites dans un programme. On appelle "jeu
d'instructions" l'ensemble des actions que le µprocesseur sait exécuter. Le dessin
ci-dessous renseigne sur l'organisation interne (l'architecture) possible d'un
µprocesseur.
Le µprocesseur communique avec l'extérieur par l'intermédiaire d'un bus de
données. Il gère la mémoire par l'intermédiaire d'un bus d'adresses.
Il possède de registres internes (lignes mémoire RAM) indispensables à son bon
fonctionnement. Parmi ces registres il faut remarquer : le compteur programme
(il contient l'adresse mémoire de la ligne programme à exécuter) la pile LIFO
qui permet de sauvegarder le contexte du µprocesseur et l'accumulateur qui a un
rôle très particulier (c'est sur son contenu que sont exécutées les instructions
arithmétiques et logiques).
L'ALU (unité arithmétique et logique) constitue le calculateur du µprocesseur.
L'UCT (unité de contrôle) gère le séquencement de l'ensemble.
Pour pouvoir fonctionner un µprocesseur a besoin de mémoire (RAM pour les
données et de type ROM pour le programme) et de circuits de couplage (série ou
parallèle) qui permettent la connexion avec le monde extérieur.
Le µcontrôleur 68HC11
hc11+regétat.doc 2/10
Notion de µcontrôleur :
Les µcontrôleurs sont des circuits intégrés qui ont été développés dans un souci
de miniaturisation. Un µcontrôleur est constitué d'un noyau (un µprocesseur)
auquel on ajoute l'ensemble des circuits nécessaires à garantir son autosuffisance
(mémoires, registres spécifiques, circuits de couplage etc.). Il dispose du jeu
d'instruction du µprocesseur dont il est issu auquel on ajoute quelques
instructions particulières (généralement des instructions de manipulation de bits)
afin de réduire la taille des programmes.
Les circuits de couplage (ou périphériques) sont appelés "ports d'E/S" et sont de
type série ou parallèles. Leur nombre et leur nature dépendent de la destination
du µcontrôleur.
La mémoire de type ROM contient le programme; son contenu est fixe. Le
programme est directement exécuté à partir de la mémoire ROM. Elle peut
éventuellement être effacée pour être reprogrammée (nouvelle application ou
évolution du programme). Sa taille est importante (plusieurs koctets). Elle est de
type ROM (programmation en usine à l'intégration du circuit), de type PROM
(OTP One Time Programmable) ou EEPROM (mémoire flash).
La mémoire RAM contient de façon temporaire les données gérées par le
programme (les variables). Sa taille est réduite (quelques centaines d'octets).
Le choix d'un µcontrôleur est dicté par le nombre de lignes d'E/S nécessaires et
la taille de la mémoire ROM et RAM possibles.
Le µcontrôleur 68HC11
hc11+regétat.doc 3/10
Structure interne du µcontrôleur 68HC11
Le µcontrôleur 68HC11 a un bus de données de 8 bits et d'adresses de 16 bits
(champ adressable 64ko).
Les principaux registres internes contenus dans la CPU:
2 accumulateurs 8 bits A et B concaténables pour former l'accumulateur D
2 registres d'index 16 bits X et Y.
Les ports d'E/S: ils sont au nombre de 5 mais seuls 3 (PortB PortC et PortE) sont
facilement utilisables comme des lignes d'entrées sorties.
PortB: 8 bits en sortie uniquement adresse $1004
PortC: 8 bits E/S adresse $1003. On peut configurer chaque ligne du
PortC en entrée ou en sortie indépendamment des autres en écrivant un mot de
direction dans le registre DDRC d'adresse $1007 (un bit du DDRC à 0 place le
bit de même poids du PortC en entrée et un bit du DDRC à 1 place le bit de
même poids du PortC en sortie).
PortE: 8 bits en entrées ou 8 voie analogique orientées vers un CAN
adresse $100A.
Le µcontrôleur 68HC11
hc11+regétat.doc 4/10
CCR : le registre d’état
b7 b0
S X H I N Z V C
Le registre CCR est positionné par l’instruction en cours, à la fin de son
traitement par le processeur. Bien qu’on puisse regrouper différentes instructions
entre elles de manière à connaître leur résultat vis à vis de ce registre, chaque
instruction va influencer sur le CCR d’une manière qui lui est propre. Pour lever
le moindre doute, le seul recours est le jeu d’instructions fourni par le
constructeur qui fait état des bits suite à une instruction donnée.
C (Carry : Retenue) : est mis à 1 lorsque le résultat de l’instruction génère une retenue.
Le terme retenue doit être pris au sens large du terme, elle concerne les instructions
qui se rapportent à :
l’arithmétique
les décalages / rotations
les comparaisons
les calculs de compléments
etc.
V (oVerflow = débordement) : positionné à 1 lorsque l’opération arithmétique a généré un
débordement de l’accumulateur utilisé.
Ex : LDAA#255
INCA ici A=0 et V=1
En effet, il y a débordement car la valeur de A devrait être 256 ce que ne peut stocker
un registre 8 bits, et qui passe donc à 0.
Z (Zéro) : passe à 1 lorsque le résultat de l’instruction est nul.
Ex : CLRA ou LDA #01
DECA ici Z=1 car A=0
N (Négatif) : positionné à 1 si le résultat de la dernière opération arithmétique réalisée est
négative, c’est à dire lorsque le bit de poids fort vaut 1 ( cas des nombres signés ).
H (Half Carry = demi retenue) : utilisé lors des calculs DCB ( Décimal Codé Binaire ).
I (Interrupt mask = masque d’interruption) : ce bit inhibe les interruptions lorsqu’il vaut 1.
X (XIRQ interrupt mask = masque d’interruption XIRQ) : de la même manière que le bit
I, X inhibe l’interruption XIRQ lorsqu’il vaut 1.
S (Stop) : positionné à 1, l’exécution de l’instruction STOP est remplacée par un NOP.
Remarque : l’instruction STOP fait passer le processeur en mode « endormi ».
Cela signifie que l’horloge interne est arrêtée. Lorsque le processeur est réveillé,
cette horloge sera valide après un certains nombres de cycles dus à un état
transitoire de mise en oscillation du quartz (ce qui peut être à proscrire dans
certaines applications de type temps réel).
Le µcontrôleur 68HC11
hc11+regétat.doc 5/10
1. L'assembleur HC11:
Définition :
Le programme pour pouvoir être exécuté doit être chargé en mémoire. Les
mémoires ne contiennent que des mots écrits en binaire sous forme d'octets.
Une fois écrit un programme doit donc être traduit en binaire (on dit en code
machine).
Le langage assembleur est un langage de programmation de bas niveau (par
opposition aux langages évolués). Cela signifie qu'il peut être directement
traduit en binaire sans interprétation de son contenu. Il fait appel à des
mnémoniques qui sont des mots constitués d'abréviations de l'action que doit
réaliser l'instruction (tout cela en anglais). Par exemple le mnémonique
LDAA signifie LoaD Accumulator A.
Règles syntaxiques :
Une ligne de programme est décomposée en 4 zones (appelées champs) :
label, mnémonique, opérande et commentaire. On passe d’un champ au
suivant avec un espace ou une tabulation. Il est conseillé d’utiliser un éditeur
assembleur pour saisir le programme car avec la tabulation chaque champ est
indenté (aligné verticalement) ce qui en facilite la lisibilité.
Exemple de ligne assembleur :
encor ldaa $2000 ; initialisation de A
encor est un label (ou étiquette) ldaa est le mnémonique de l’instruction
$2000 est l’opérande (ce sur quoi porte l’instruction) et ce qui suit ; des
commentaires.
Une étiquette sert à repérer une ligne ou une zône de programme. Une
étiquette ne génère pas de code machine. Une ligne doit contenir un
mnémonique ou un mnémonique et son opérande. Seuls les mnémonique et
les opérandes génère du code machine. Une ligne précédée d’un des 2
caractères suivants « * » ou « ; » est ignorée lors de l’assemblage du
programme.
Les opérandes numériques sont exprimés par défaut en décimal ; pour une
écriture en hexadécimal le nombre doit être précédé du symbole $ et % pour
du binaire.
L’assembleur ne distingue pas les minuscules des majuscules sauf pour les
étiquettes.
Modes d’adressage :
Les modes d’adressage caractérise la façon dont on accède à la mémoire pour
une instruction de sauvegarde (STA : Store Accumulator) ou à la donnée.
Lors de l’écriture d’un programme le choix du mode d’adressage utilisé pour
chaque instruction est primordial car il conditionne le format de l’instruction
(nombre de lignes mémoire occupées).
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !