Cours Microcontrôleur Microprocesseur 73
Cours Microcontrôleur Microprocesseur 73
Cours Microcontrôleur Microprocesseur 73
microprogrammés
Exemple du ST62
Date :14/01/01
Révision : 20
Fichiers : mpu1 ss exercices
CHOFFARDET / SERREAU
Complexité / Coût :
Dans la logique câblée, un problème est résolu par un ensemble de fonctions logiques, la taille du
circuit croissant avec la complexité du problème.
La logique programmée nécessite un minimum de composant mais la taille du circuit n'augmente plus
avec la complexité du problème (moins vite qu'en logique câblée).
En fait le coût des microcontrôleurs a tellement chuté que le seuil de rentabilité est très bas et peu de
problèmes sont actuellement résolus en logique câblée.
Evolutivité :
En logique câblée, la moindre modification du problème entraîne la mise au point d'un nouveau circuit.
Alors qu'en logique programmée on pourra parfois se contenter d'une modification du programme.
Rapidité :
En fait, la logique câblée garde l'avantage en terme de rapidité. On notera l'existence de circuits
logiques programmables (Pal et GAL) à mi-chemin entre les deux technologies.
Ce cours prendra comme exemple de système microprogrammé les microcontrôleurs fabriqués par ST
MICROELECTRONICS utilisables avec le STARTER KIT ST626X.
A la maison :
Ordinateurs personnels ; machines à laver ; Fours à micro-ondes ; Aspirateur ; Climatisation ;
Jouet ; Alarme.
Les voitures :
Airbag ; tableau de bord ; Allumage ; Carburation ; ABS
Industrie :
Les API ; machines outils ;
Le programme gère ces tâches mais des informations doivent parvenir au système. Cela se fait par un
ensemble d’entrées sorties qui peut être :
Entrées Tout ou Rien (TOR)
Entrées analogiques
Entrées numériques
Sorties tout ou rien
Sorties analogiques
Sorties numériques
La plupart des applications ci-dessus peuvent être réalisées avec des microcontrôleurs 8 bits, peu
performants mais richement dotés de circuits d'entrées sorties. Ce marché est en pleine expansion.
On notera :
Le ST6265 est le moins puissant tant au niveau de son ALU que de sa puissance de calcul.
Le ST7 fait jeu égal avec le 80c196kc en 8 bits.
Les 68HC11 ; 80C535 et 80c196kc sont plus difficiles à mettre en œuvre (boîtier).
Le 68HC05 est basé sur un 6800 le 68HC11 sur un 6801.
Enfin le PIC16C74 est le plus puissant en 8 bits mais il n'a pas de multiplication câblée.
L’unité centrale exécute les opérations logiques ou arithmétiques qui permettent de calculer
les données de sorties à partir des données d’entrées.
les bus sont les liaisons électriques qui véhiculent les informations entre les différents
composants du système électronique ;
La mémoire stocke le programme, ainsi que toutes les données nécessaires au traitement.
L’horloge donne la cadence, par des impulsions électriques qui synchronisent le système.
Une alimentation
Une unité arithmétique et logique (UAL ou ALU) qui effectue les opérations arithmétiques
(addition, soustraction, multiplication,...), les opérations logiques (ET, OU,
COMPLEMENT...), et les tests ;
Des registres qui permettent de stocker des données, des instructions ou des adresses.
L’unité arithmétique et logique permet de faire les opérations demandées par le programme
entre les opérandes (données d’entrées) pour obtenir un résultat (données de sortie).
Il s'agit d'une ALU 8 bits, capable de traiter des octets. Elle peut exécuter :
Le résultat contenu dans l’accumulateur A, peut maintenant être enregistré dans la mémoire.
C'est une ALU rudimentaire actuellement les ALU savent multiplier et diviser, faire des opérations
logiques ET OU NON XOU sur des mots de 32 bits.
Le décodeur d'instructions lit séquentiellement les instructions du programme dans la mémoire. Il les
décode, et génère tous les signaux nécessaires pour l’exécution de chaque instruction.
En fonction des opérations demandées dans le programme, l’unité de contrôle commande tous les
autres composants. Pour cette raison on l’appelle aussi unité de commande.
Son fonctionnement est complexe mais il est totalement transparent pour l’utilisateur d’un
microprocesseur.
2.2 Liaisons
Les nappes de fils, les pistes du circuit imprimé ou les liaisons électriques dans le microcontrôleur
véhiculant les informations entre les différents composants d’un système de traitement informatique,
sont appelées bus.
Le bus de données.
En effet, pour communiquer avec d’autres systèmes, un microprocesseur doit envoyer ou
recevoir des données c’est le rôle du bus de données le nombre de fils qui constituent ce bus est
appelé largeur de bus. Un bus de données de 16 bits ou 32 bits par exemple
Le bus de données du ST62 est un bus 8 bits.
Le bus d’adresse.
LPR VOILLAUME Microcontrôleur ST626X Page 7/59
Les données sont lues ou écrites à une adresse, la largeur de ce bus définit l’espace directement
adressable par le microprocesseur. Ce bus peut être de 12 bits, 24 bits, 32 bits par exemple.
Le ST62 possède un bus 8 bits pour sa mémoire de données et de 12 bits pour sa mémoire de
programme.
La fonction mémoire est réalisée par tout dispositif capable d’enregistrer, de conserver, de
restituer une information.
Une mémoire est un ensemble ordonné de registres qui contiennent des données numériques.
La capacité binaire de chaque registre de la mémoire définit la taille des données (4, 8, 16, 32 bits).
Pour accéder à toutes les données dans la mémoire, il faut adresser tous les registres en donnant à
chacun un numéro appelé adresse.
Le nombre de registres ordonnés de la mémoire définit sa capacité en mots.
On peut actuellement fabriquer des mémoires qui ont une capacité de quelques millions d’octets
(Mega-octets) en un seul boîtier de circuit intégré.
On constate que l'adressage de 65536 registres nécessite 16 bits d’adresse puisque la plus grande
adresse (65535) s’écrit sur 16 bits.
Décodeur d'adresses
BUS d'adresses
n
données
BUS de données
On peut matériellement classer les mémoires en trois grandes familles : ROM, PROM, RAM.
Mémoire FLASH
On peut aussi classer les mémoires par leur utilisation ou leur contenu : mémoire programme et
données.
Mémoire programme
La mémoire programme contient la liste ordonnée des instructions à traiter par le processeur, c’est-à-
dire le programme. Dans un système à microprocesseur la mémoire programme est en général de type
ROM ou PROM.
Il s'agit d'une mémoire 8 bits avec un bus d'adressage de 12 bits soit une capacité de 4 ko
Utilisation Adresse
Réservé 0000h Æ 07Fh
Programme utilisateur pour les 6255 ; 6260 ; 0080h Æ 087Fh
6265 Réservé sinon
Programme utilisateur 0880h Æ 0F9Fh
Réservé 0FA0h Æ 0FEFh
Vecteur n°4 (CAN et Timer) 0FF0h Æ 0FF1h
Vecteur n° 3 (AR Timer) 0FF2h Æ 0FF3h
Vecteur n°2 Port C, SPI 0FF4h Æ 0FF5h
Vecteur n° 1 (Ports A et B) 0FF6h Æ 0FF7h
Réservé 0FF8h Æ 0FFBh
Vecteur n°0 (NMI) 0FFCh Æ 0FFDh
Vecteur Reset 0FFEh Æ 0FFFh
Mémoire de données
La mémoire de données sauvegarde les entrées en provenance des périphériques d’entrées (capteur,
boutons de pupitre, clavier, ...), les résultats intermédiaires de calcul du processeur, les données de
sorties (préactionneurs, voyants, afficheurs).
La mémoire de données est obligatoirement de type RAM puisque la lecture et l’écriture y sont
nécessaires en permanence.
Les registres en rouge ne doivent pas être adressés par les instructions SET RES
Les registres peuvent être plus ou moins nombreux dans l’unité centrale.
Un grand nombre de registres internes permet un maximum du traitement des données à l’intérieur de
l’unité centrale. On évite ainsi de nombreux accès du processeur à la mémoire pour stocker et lire des
données intermédiaires de calcul. Le temps de traitement se trouve ainsi réduit.
Un minimum de registres internes est indispensable au fonctionnement de l’unité centrale et nécessaire
à la programmation.
Accumulateur A
A
Registre d’indirection X Registre d’état mode normal
X C Z
Registre d’indirection Y
Registre d’état mode interruption
Y
C Z
Registre V
Registre d’état mode NMI
V
C Z
Registre W
W
Compteur de Programme
PC
Les registres X et Y sont des registres d’indirection, utilisés pour l’adressage indirect.
Le registre d’état CC contient des indications précieuses sur le résultat après chaque traitement par
l’unité arithmétique et logique :
le bit zéro Z est mis à un quand le résultat de l’opération est zéro,
Le bit de retenue C est mis à un quand le résultat ne peut tenir dans l’accumulateur de sortie
A, c’est à dire s’il y a débordement.
Il y a trois registres d’état contenant les bits Z et C. Un pour chaque mode de fonctionnement du
microprocesseur (Normal, Interruption, Interruption non masquable).
Le compteur ordinal PC est le registre qui pointe dans la mémoire l’adresse de la prochaine
instruction à traiter par l’unité de commande. Il s’agit d’un registre 12 bits, capable d’adresser 4 ko.
En fait, seul les registres CC ; PC et la pile sont des registres internes Les registres A, X, Y, V, W sont
présents dans la mémoire de données et sont adressés par des modes particuliers d'adressage (direct
court).
La valeur des registres d’un microprocesseur peut être incrémentée ou décrémentée directement par
l’unité de contrôle.
1/ On a utilisé le principe des bancs de mémoire. Ainsi la zone mémoire 00h -> 3fh contient 64 octets
qui sont soit de la RAM, soit une EEPROM elle-même divisée en deux (pour les ST62 dotés de 128
octets d'EEPROM). Le choix du type de mémoire se fait par l'intermédiaire du registre de données
RAM/EEPROM DRBR suivant le tableau ci dessous
Ce registre ne peut être qu'écrit, on ne doit donc pas utiliser les instruction SET / RES pour le modifier.
2/ il est possible de faire apparaître une donnée de la mémoire de programme dans la mémoire de
donnée. En fait, ce sont 64 octets de la mémoire de programme qui sont vus dans la fenêtre de données
en RAM (zone 084h Æ 0BFh)
Le choix de la zone vue en RAM se fait par le registre DRWR (DATA ROM WINDOW REGISTER).
Une adresse de la mémoire programme est sur 12 bits, comme 64 octets sont vus (6 bits), il faut
préciser les 6 premier bits de l'adresse dans le registre DRWR (Les bits 6 et 7 seront ignorés).
Ainsi, lors de l'accès à une donnée dans cet espace seul les 6 premiers bits de l'adresse de la donnée
seront pris en compte pour obtenir le reste de l'adresse, les deux bits de poids fort seront ignorés.
2.4.1 Introduction :
Un système de traitement à microprocesseur communique avec les périphériques d’entrées sorties par
écriture ou lecture de valeurs numériques binaires (données codées).
L’interface est la fonction qui permet de transférer les données entre le système de traitement et un
périphérique extérieur (imprimante, pré actionneurs, clavier, capteur, boutons, ...).
Le microprocesseur écrit ou lit le contenu du registre de données dans l’interface qui se charge de la
communication avec le périphérique.
Le microprocesseur configure le périphérique par des registres de commandes. Ces registres de
commandes, situés physiquement dans les circuits d'interface, sont vus par le microprocesseur comme
des registres de la mémoire de donnée.
Caractéristiques :
Organisation :
L'EEPROM est sélectionnée via le registre DRBR elle est organisée en 8 colonnes de 8 octets :
Colonne 0 Æ octets 0 à 7
Colonne 1 Æ octets 8 à 15
Etc …
Colonne 7 Æ octets 56 à 63
Les procédures de lecture, écriture et écriture parallèle sont les suivantes :
Erreur! Aucune rubrique spécifiée.
Registre :
Il est également possible d'écrire jusqu'à 8 octets d'une colonne en même temps par l'utilisation des
Bits E2PAR1 et E2PAR2. ce mode d'écriture est appelé mode parallèle.
Caractéristiques :
Le ST62 possède trois ports 8 bits d'entrées sorties notés PA, PB, PC.
Chaque bit d'un port peut être configuré individuellement en entrée ou en sortie.
Les données à écrire ou à lire sont lues ou écrites sur les registres DRA DRB ou DRC.
La configuration des ports se fait par les registres ORX, DDRX et DRX lorsque le port est configuré
en entrée (X=A, B ou C).
Mise en œuvre :
Lorsque l’on modifie un port d’entrées sorties, on ne peut pas modifier les trois registres en même
temps. On passe donc par des configurations intermédiaires.
Le diagramme suivant donne les transitions possibles d’un port. Ne pas suivre ce diagramme peut
entraîner des dysfonctionnements du microcontrôleur.
- Donner la valeur des registres DRX ; ORX ; DDRX correspondant à cette configuration.
- Proposer un algorithme de programmation de ces registres.
Caractéristiques :
- Registre à décalage 8 bits,
- Nombre de bits transmis programmable,
- Taux de transfert de 2400 à 61530 Baud
- Possibilité de mettre en œuvre différents protocoles (RS232, I²C, …)
Synoptique de la SPI :
Les données sont envoyées ou reçues sur deux lignes la SPI se charge de replacer les bits dans son
registre à décalage de la SPI (SPIDSR).
L'ensemble est synchroniser par un signal d'horloge émis sur la ligne SCK.
Caractéristiques :
• Décompteur 8 bits
• Prédiviseur 7 bits programmable
• 1 interruption masquable (fin de comptage)
• Entrée temporisateur externe
• 3 modes de fonctionnement
Mesure d'impulsion
Compteur d'éventements
Générateur d'impulsion
• Le temporisateur peut être arrêté par logiciel
Synoptique du Temporisateur :
Le prédiviseur :
Le prédiviseur peut être cadencé soit par l'oscillateur principal (fosc / 12) soit par une horloge externe
sur l'entrée TIMER.
Le prédiviseur est décrémenté sur chaque fronts montant de son entrée de comptage.
La sortie est multiplexée ce qui permet un facteur de division de 1 à 128.
Le compteur :
➥ PS0-PS1
Ces trois bits règlent le multiplexeur 8 vers 1.
TOUT = 0 ; DOUT = 0
Dans ce mode, la broche TIMER est une entrée et le prédiviseur est décrémenté sur les fronts
montants de cette entrée. Cela permet de compter les événements survenant sur cette entrée.
➥ TMZ : Temporisateur à 0.
TMZ = 1 lorsque TCR = 0h
.
LPR VOILLAUME Microcontrôleur ST626X Page 24/59
☞ TCR : Registre du temporisateur (Timer Counter Register).
Adresse : D3h – Lecture écriture.
Note :
La broche TIMER n'est présente que sur les microcontrôleurs 6265 et 6255.
Lorsque cette broche n'est pas présente, l'intérêt de ce temporisateur est fortement diminuée.
Les bits DOUT et TOUT ne sont pas utilisés. TOUT doit toujours être à 1.
Exercice : Temporisateur
On souhaite générer des interruptions périodiques (passage à zéro du temporisateur). Quelles sont les
fréquences possibles ?
Caractéristiques :
• Compteur 8 bits avec un prédiviseur programmable,
• Fréquence maximum : fosc,
• 1 ligne d'interruption masquable,
• 4 modes de fonctionnement :
Rechargement (PWM et base de temps),
Compteur d'événements,
Mesure de période,
Boucle à verrouillage de phase.
Fonctionnement :
Prédiviseur :
Le prédiviseur peut être cadencé par trois sources : L'oscillateur ; l'oscillateur divisé par 3 ou une
source extérieure sur ARTIMin.
Le choix du facteur de division se fait par les bits PS0 – PS2.
La sortie du prédiviseur est reliée au compteur ARTC.
Le compteur :
Lorsque le compteur déborde, son contenu est automatiquement rechargé avec la valeur du registre
ARRC. La sortie est activée (ARTIMout =1 si PWMOE =1). Une interruption est générée (drapeau
OVF) si OVIE= 1.
Lorsque ARTC = ARCP la sortie est désactivée (ARTIMout = 0 si PWOE = 1)
Une interruption est générée (drapeau CPF) si CPIE = 1.
Mode PWM
Lorsque le compteur ARTC déborde (OVF) le compteur est automatiquement rechargé avec la valeur
du registre ARRC et la sortie ARTIMout est forcée à 0.
Lorsque le compteur atteint la valeur du registre ARCP, la sortie ARTIMout est forcée à 1.
La valeur du rapport cyclique est fixée par ARCP sa résolution par 255 – ARRC.
La fréquence par :
Fosc ; le prédiviseur et 255 – ARRC
ARTC
255
ARCP
ARRC
t
PWM
Dans ce mode, l'opération de capture (transfert du registre ARRC vers ARTC) est effectuée lors d'un
front actif sur l'entrée ARTIMin.
☞ ARSC0 : Registre de contrôle et d'état du temporisateur (Auto Reload Status Control Register
0).
Adresse : D5h – Lecture / écriture.
D7 D6 D5 D4 D3 EF CPF OVF
On souhaite générer un signal PWM de fréquence 5 kHz avec un ST6260 cadencé à 8 MHz.
Le Timer à rechargement automatique (ARTIMER) est capable de générer un signal carré de rapport
cyclique variable. α peut prendre 256 valeurs. Quelle est la fréquence maximale du signal ?
Caractéristiques :
Conversion par approximations successives.
Résolution de 8 bits.
Erreur inférieure à + ou – 2 LSB.
Temps de conversion : 70 µs à 8MHz.
Interruption générée à la fin de la conversion.
Possibilité de le désactiver par voie logicielle afin de réduire la consommation.
Fonctionnement :
Il s'agit d'un convertisseur par approximations successives. Il est activé par la mise à 1 du BIT PDS.
La conversion est lancée par la mise à 1 du bit STA. Lorsque la conversion est terminée, EOC passe à
1 et une interruption est générée si EAI = 1.
Le résultat peut être lu dans le registre ADR. La mise à 1 du bit STA force à 0 le bit EOC.
Mise en œuvre :
# La précision du CAN décroît en dessous de 1,2 MHz (à 32 kHz la précision n’est plus que de + ou
– 4 LSB)
# Ne jamais configurer plus d’une entrée en tant qu’entrée analogique.
# Laisser au moins une instruction entre l’activation du CAN et le début d’une conversion.
# Pour un meilleur résultat : placer le processeur en attente (Mode WAIT) ; autoriser les
interruptions du CAN et éviter de modifier les sorties.
# La capacité d'entrée du convertisseur est d'environ 12 pF. L'impédance du signal mesuré ne doit
pas dépassé 30 kΩ afin que cette capacité soit correctement chargée.
Registres :
Exercice : CAN.
Donner l’algorithme de l’utilisation du CAN sans interruption.
D3 T4
D4 T3
D5 T2
D6 T1
D7 T0
/ 256 OSC / 12
T0 T1 T2 T3 T4 T5 SR C
Si le bit C est à 0, le chien de garde peut alors être utilisé comme un Timer 7 bits.
➥ T5-T0 : compteur
T5 est le bit du compteur le plus significatif (MSB) et T0 le moins significatif (LSB).
L'horloge synchronise tous les circuits du microcontrôleur. Plus elle est rapide et plus le
microcontrôleur va vite. En contre partie il consomme plus.
Un oscillateur de secours (OSG) permet de filtrer le signal de l'oscillateur principal, limite la fréquence
interne (en sortie du diviseur par 1, 2 ou4) donne la main à l'oscillateur auxiliaire basse fréquence
(LFAO) en cas de coupure de l'oscillateur principal.
➥ OSRC3
Ce bit doit être activé afin de minimiser la consommation du ST62.
➥ OSRC2
Doit rester à 0.
Un microprocesseur doit pouvoir interrompre son travail pour exécuter des opérations dont le
traitement doit être immédiat (surcharge, arrêt d’urgence par exemple). Il doit éventuellement être
capable de reprendre le cours de son travail après le traitement.
Ce traitement particulier s'appelle interruption. Il existe plusieurs types d'interruptions.
Quelques exemples :
Demande de réinitialisation (RESET),
Evénement extérieur demandant un traitement immédiat,
Fin d'une conversion analogique numérique.
Les sources d'interruption peuvent être internes (CAN, Timer) ou externes (Reset, événement
extérieur) lorsqu'elles sont externes, une broche du circuit est utilisée comme source d'interruption.
Les interruptions sont hiérarchisées (priorités). En effet, une demande de RESET par exemple ne doit
pas être interrompue par la fin d'une conversion.
Le ST62 distingue deux niveaux d'interruptions : les Interruptions non masquables et les interruptions
classiques.
Interruptions non masquables : RESET et l'interruption NMI (interruption prioritaire)
Interruptions classique : CAN, Timer, Port d'entrée sortie, etc. (interruption non prioritaire)
Vecteurs d’interruptions :
Ces différentes sources d'interruptions demandent des traitements différents (différents programmes).
La liste des emplacements de ces programmes est appelée table des vecteurs d’interruption. Un
vecteur d'interruption est un emplacement particulier de la mémoire qui contient l’adresse du
programme d’interruption. Parfois, plusieurs sources se partagent le même vecteur (la même adresse).
C'est alors au programme de rechercher la source et d'effectuer un traitement conditionnel.
Bascule
Port B PBE
≥1 CLK Q 0
CLR
Interruption #1
MUX
1
&
LES
Port C PBE Bascule
≥1 ≥1 =1
Interruption #2
&
CLK
Q
SPI CLR
ESB
OVF
OVIE &
CPF
CPIE & ≥1 &
Interruption #3
Sortie du mode
WAIT / STOP
EF
&
EIE
≥1
TMZ
ETI &
Vdd
EOC
≥1 &
Interruption #4
EAI &
NMI CLK
Bascule
Q
&
CLR
NMI #0
GEN
- Quelles sont les interruptions que l’on peut bloquer avec le bit GEN ?
Dans l’organigramme :
- repasser en bleu le fonctionnement normal du CPU,
- repasser en rouge la demande d’interruption,
- repasser en vert la sortie d’interruption.
- Que se passe-t-il si le CPU reçoit une instruction RETI alors qu’il est en mode normal ?
- Que se passe-t-il si la pile est vide bien que le CPU soit en mode NMI et quand cela peut-il se
produire ?
Le ST62 démarre sur un reset, en mode interruption non masquable afin que le processus
d'initialisation ne puisse être interrompu. L’organigramme du reset est le suivant :
2.8.1 Introduction :
Le ST62 a été conçu pour fonctionner dans un environnement difficile :
Erreur! Aucune rubrique spécifiée.
2.8.2 Alimentation :
Le ST62 supporte une alimentation de 3 à 6V. (VSS : masse)
Pour : 3 V fmax = 2 MHz
5 V fmax = 8 MHz
6 V fmax = 8 MHz
Eventuellement, un condensateur de découplage de 10 µF.
2.8.3 Oscillateur :
L'oscillateur peut être obtenu :
¾ Par un circuit RC : de précision faible et dépendant de la température,
¾ Par un signal externe : nécessite un oscillateur externe,
¾ Par un Quartz permet une grande précision et une faible dérive en température jusqu'à 8 MHz.
¾ Par l'oscillateur auxiliaire
Les valeurs de fréquences sont approximatives (tolérance des résistances, dérive en température)
2.8.4 Reset
2.9.1 Désignation :
ST62 E 52 B B 1
T 53 C M 6
P 55 N 3
60
62
63
65
Le type de microcontrôleur :
Ainsi, un ST62E60CB6
Est la version C, effaçable aux UV, en boîtier DIP28, suffixe 6 du ST6260.
Caractéristiques maximum :
(1) Dans ces limites, les diodes de protection ne conduisent pas. Les tensions en dehors de ces limites
sont autorisées aussi longtemps que les courants d'entrées restent dans les spécifications.
Spécifications recommandées :
Valeurs
Symbole Paramètres Conditions de Test Unité
Min. Typ. Max.
Version suffixe 6 -40 85
TA Température de fonctionnement Version suffixe 1 0 70
°C
Version suffixe 3 -40 125
fOSC = 4 MHz suffixes 1 &6 3,0 6,0
Tension de fonctionnement fOSC = 4 MHz suffixe 3 3,0 6,0
V
Version C fOSC = 8 MHz suffixes 1 &6 3,6 6,0
fOSC = 8 MHz suffixe 3 4,5 6,0
VDD
fOSC = 4 MHz suffixes 1 &6 3,0 6,0
Tension de fonctionnement fOSC = 4 MHz suffixe 3 3,0 6,0
V
Version B fOSC = 8 MHz suffixes 1 &6 4,0 6,0
fOSC = 8 MHz suffixe 3 4,5 6,0
VDD = 3,0 V suffixes 1 &6 0 4,0
Fréquence de l'oscillateur VDD = 3,0 V suffixe 3 0 4,0
Version C VDD = 3,6 V suffixes 1 &6 0 8,0
VDD = 3,6 V suffixe3 0 4,0
fOSC MHz
VDD = 3,0 V suffixes 1 &6 0 4,0
Fréquence de l'oscillateur VDD = 3,0 V suffixe 3 0 4,0
Version C VDD = 3,6 V suffixes 1 &6 0 8,0
VDD = 3,6 V suffixe3 0 4,0
IINJ+ Courant d'entrée positif VDD = 4,5 à 5,5 V +5 mA
IINJ- Courant d'entrée négatif VDD = 4,5 à 5,5 V -5 mA
Valeur
Symbole Paramètres Conditions de Test Unité
Min. Typ. Max.
Fréquence interne 200 400 800
fLFAO kHz
LFA activé
VDD = 3 V 2
Fréquence interne
fOSG VDD = 3,6 V 2 FOSC MHz
OSG activé
VDD = 4,5 V 4
VDD = 5,0 V Version C
R = 47 kΩ 4 5 5,8 MHz
R = 100 kΩ 2,7 3,2 3,5 MHz
R = 470 kΩ 800 850 900 kHz
fRC
VDD = 5,0 V Version B
R = 10 kΩ 2,4 3,1 3,8 MHz
R = 27 kΩ 1,8 2,2 2,5 MHz
R = 100 kΩ 800 980 1200 kHz
Caractéristiques de l'EEPROM :
Valeur
Symbole Paramètres Conditions de Test Unité
Min. Typ. Max.
Temps de rétention de 10
Rétention TA = 55 °C Ans
l'EEPROM
TA = 25°C 5 10
TWEE Temps d'écriture TA = 85°C 10 20
ms
TA = 125°C 20 30
Réécritures 3 .105 106 cycles
PB2 3 14 NMI
Vpp / TEST 3 18 PC4 / SCK / Ain
PB3 4 13 RESET
PB2 4 17 NMI
ARTIMin / PB6 5 12 OSCout
PB3 5 16 RESET
ARTIMout / PB7 6 11 OSCin
ARTIMin / PB6 6 15 OSCout
ST62X55 / 62X65
ST62X65 /62X55
3.1 Le Programme :
Un programme utilisateur est une réalisation logicielle qui est implantée dans la mémoire d’un système
de traitement. Il définit, à l’aide d’instructions, les opérations que doit réaliser le processeur sur les
données d’entrée pour obtenir les données de sortie.
Les instructions sont exécutées les unes après les autres, dans l’ordre de leur implantation en mémoire.
Langage machine
Le langage machine est le langage compréhensible par le microprocesseur au niveau du décodeur
d’instruction. Il est constitué uniquement de nombres binaires.
Langage assembleur
Il est pratiquement impossible de lire un programme en langage machine codé en binaire. Il est encore
très fastidieux de lire un programme en langage machine codé en hexadécimal.
Pour faciliter le travail de programmation, les concepteurs ont développé pour chaque système à
microprocesseur, un logiciel appelé assembleur qui traduit les codes mnémoniques en langage
machine.
Le langage de programmation d’un microprocesseur à base de mnémonique est appelé langage
assembleur. Le programme originel en langage assembleur est le programme source. Le programme
traduit en langage machine est le programme objet.
La programmation en assembleur est une programmation au plus prés du processeur. C’est un travail
fastidieux qui demande de connaître parfaitement la structure matérielle du système utilisé.
Chaque langage possède son domaine de prédilection (Base de donnée, calcul scientifique etc...)
Un commentaire associé à chaque ligne d’instruction est très utile, voire indispensable, pour le
programmeur ou pour le technicien de maintenance.
Le numéro d’ordre d’instruction permet de visualiser facilement l’ordonnancement des instructions.
Les modes d’adressage caractérisent la façon dont les opérandes sont échangés entre les périphériques,
la mémoire et les registres de l’unité de traitement.
Adressage Immédiat
Le code opération de l’instruction est suivi immédiatement d’une valeur numérique qui est l’opérande.
On note dans l’organigramme : nn -----> R
On lit : transférer la valeur immédiate nn dans le registre R.
Exemple : charger la valeur décimale 19 dans l’accumulateur A.
On note : 19 ------> A
En langage assembleur «ST62 » l’instruction qui charge une valeur immédiate (constante donnée par
le programme) dans l’accumulateur A est : LDI A,19.
En assembleur, les instructions équivalentes à LDI A,19 sont :
LDI A,13h
LDI A,00010011b
Adressage direct
Le code opération de l’instruction est suivi d’une adresse mémoire. La donnée contenue dans l’adresse
mémoire est l’opérande de cette opération.
On note dans l’organigramme : (e) ------> R.
On lit : transférer le contenu de la mémoire repérée par l’adresse e dans le registre R.
Exemple : charger dans l’accumulateur A le contenu de l’adresse 08Fh.
On note (08Fh) -----> A
En langage assembleur « ST62 » l’instruction qui charge la valeur contenue à l’adresse 08fh de la
mémoire dans l’accumulateur A est LD A,08Fh
LPR VOILLAUME Microcontrôleur ST626X Page 48/59
LD est la mnémonique de l’instruction « charger » (LOAD A).
Le symbole « h » signifie que l’adresse est donnée en hexadécimal.
En langage machine, cette instruction s’écrit :
En hexadécimal 1Fh 8Fh ;
En binaire 0001 1111 1000 1111.
1Fh est le code opération du chargement dans l’accumulateur d’une donnée en adressage étendu.
« 8F » est l'octet de l’adresse contenant la donnée. On constate que l’instruction de chargement dans
l’accumulateur A en adressage étendu nécessite 2 octets.
Adressage indirect
Le code opération contient implicitement l’opérande de l’opération. Il ne faut donc pas préciser une
adresse ou une donnée après le code opération.
Ce type d’adressage est utilisé pour un transfert de registre à registre, pour initialiser un registre, ou
pour faire une opération sur un registre (complémentation, incrémentation, décalage, rotation,...)
Exemple mettre la valeur « 0 » dans l’accumulateur s’écrit CLR A en assembleur (CLEAR A).
En langage machine le code opération de cette instruction s’écrit :
En hexadécimal DFh FFh ;
En binaire 1101 1111 1111 1111.
Adressage immédiat
Adressage relatif
Utilisé par les instructions de saut conditionnel, donne ici le saut à effectuer à partir de l’adresse en
cours (décalage positif ou négatif)
Le nombre de mode d’adressage et leur complexité fait partie des éléments permettant de déterminer la
puissance du microprocesseur.
Cycles
Instructions du microcontrôleur ST62 Mnémonique Adressage Flag
R correspond au registre A, X, Y, V ou W
rr correspond à l'adresse d'un registre en mémoire de donnée sur 8 bits
nn est une donnée sur 8 bits
e est une adresse de la mémoire de programme sur 12 bits
b correspond à un numéro de bit de 0 à 7 :
7 6 5 4 3 2 1 0
L’assembleur du ST62 est un programme : AST6. Il est commun à toute la famille des ST62
Le code source est un fichier ASCII créé avec n’importe quel éditeur de texte (EDIT ou NOTEPAD).
Opérande Commentaire
Opération
étiquette
L’étiquette :
Le premier champ commence dés le début de la ligne (pas d’espace, sinon l’assembleur considère qu’il
s’agit d’une opération).
Il s’agit d’une étiquette afin de référencer certain point du programme pour les instructions de saut.
Ce champ est facultatif.
L’opération :
Un espace au minimum doit séparer l’étiquette de l’opération. S’il n’y a pas d’étiquette, il faut insérer
un espace en début de ligne.
Il s’agit du mnémonique de l’opération du microcontrôleur.
L’opérande :
Un espace au minimum doit séparer l’opérande de l’opération.
Il peut y avoir deux opérandes séparés d’une virgule.
L’opérande peut ne pas exister (adressage inhérent).
Commentaire :
Un commentaire commence par un point virgule.
Il est très important de commenter un programme afin qu'il puisse être repris par quelqu'un d'autre que
le concepteur du programme ou tout simplement pour pouvoir le reprendre plus tard.
.VERS
.ROMSIZE
Indique la taille en ko de la ROM du microcontrôleur.
Ex :
.ROMSIZE 4
.INPUT
Permet d’insérer un fichier ici le fichier texte. Cette directive est très utile, en effet un programme
commence souvent de la même façon ou alors on retrouve souvent des bouts de codes identiques d’une
application à une autre. Il suffit d’écrire ce code dans un fichier et d’ajouter la directive .INPUT
associée au nom du fichier.
Ex:
.INPUT "6260_REG.ASM"
Ici, il s’agit des déclarations de registre (noms et adresse de tous les registres).
.ORG
Définit l'emplacement en mémoire de programme à partir duquel le code va être implanté.
Exemple :
.ORG 0ffeh
JP Debut
Le ST6260 démarre sur le vecteur RESET en mode NMI. Il faut donc penser à donner au vecteur
RESET l’adresse de début de programme et terminer la routine d’initialisation par un RETI afin de
sortir le processeur du mode NMI
Ne pas oublier le chien de garde, s'il est activé, en insérant régulièrement des instructions LDI wdr,
0ffh.
Exercice : Temporisation.
Le langage machine est parfois trop rapide, on est alors obligé d'insérer une boucle de retard
permettant de ralentir le programme.
L'algorithme est le suivant :
V <- 255
V <- V-1
non
V=0?
Exprimer le temps de cette boucle en fonction de la valeur initiale du registre V. En déduire les temps
mini et maxi de ce retard. Le ST6260 est cadencé à 8 MHz.
On peut avoir besoin de retards plus importants, dans ce cas, il faut imbriquer deux boucles.
Ecrire l'algorithme et le programme de ces deux boucles imbriquées.
Pour compléter les informations données dans ce cours, il est nécessaire de se reporter à la
documentation fournie par ST MICROELECTRONICS.
Bibliographie :
LE MANUEL DU MICROCONTROLEUR ST62 (ELEKTOR)
DATASHEETS ST des différents produits
WWW.ST.COM