TP1 4
TP1 4
TP1 4
TP 1 : ASSEMBLEUR 68HC11
Le but de ce TP sur machine est de mettre en œuvre le jeu d’instruction et les modes
d’adressage du processeur 68HC11 de Motorola (une documentation détaillée sur les
instructions proposées par ce processeur sont en annexe).
Masses
Liaison série ORDINATEUR
E
DE
A0/D0 TYPE PC
AS
R
R/W A
M 68HC11
Reset
Alimentation
5V
A15-A8
A7/D7-A0/D0
7 A 0 7 B 0 accumulateurs 8 bits A et B
15 D 0 ou accumulateur 16 bits D
15 X 0 registre d'index X
15 Y 0 registre d'index Y
15 SP 0 pointeur de pile
S X H I N Z V C
Validation Retenue/
Stop Borrow
Dépassement
masque XIRQ
Zéro
Demi-retenue
Négatif
masque IRQ
Les indicateurs du registre CCR sont de deux catégories : les bits 0, 1, 2, 3 et 5 positionnés en
fonction du résultat des instructions qui manipulent les données, et les bits 4, 6 et 7 dont le
rôle est lié au fonctionnement du microcontrôleur en interruption :
Bit 0 (C/B) : retenue issue de l'UAL (Carry) ou dépassement en non signé,
Bit 1 (V) : dépassement de capacité (oVerflow) lors d'une opération en signé,
Bit 2 (Z) : résultat de l'opération précédente est nul,
Bit 3 (N) : résultat de l'opération précédente est négatif,
Bit 5 (H) : retenue du bit 3 dans l'UAL pour les opérations en BCD,
Bit 4 (I) : masque général d'interruption IRQ et périphériques internes,
Bit 6 (X) : masque d'interruption rapide XIRQ,
Bit 7 (S) : instruction Stop validée ou non.
ORG $8000
8000 86 05 BOU LDAA #$05
8002 B7 80 07 STAA DATA
8005 20 F9 BRA BOU
8007 XX DATA RMB 1
C’est une petite boucle qui écrit en permanence la valeur 05h (5 en hexadécimale) dans la case
mémoire appelée DATA (adresse 8007h, les adresses sont indiquées en hexadécimale).
Nous allons décrire ci-dessous la procédure à suivre pour télécharger tout le code objet dans
la RAM du microcontrôleur via la liaison série.
Créez (dans le répertoire de travail) un fichier que vos appellerez chrono.asm à l’aide du
Bloc note de Windows et écrivez les mnémoniques du programme indiqué pécédemment,
puis enregistrez le fichier.
Lancez l’invite de commandes (dans le répertoire de travail) puis tapez la commande suivante
suivie de la touche <Entrée> :
as11 chrono.asm –l
L’assembleur a créé un fichier appelé chrono.s19, qui est un fichier texte au format s19 de
Motorola (fichier en caractères ASCII, téléchargeable via une liaison série).
Appuyez sur le bouton reset de la carte HC11EVBU2 (petit switch entre le connecteur de la
liaison série et celui de l’alimentation). Vous devez obtenir le message suivant dans la fenêtre
de l’HyperTerminal :
« BUFFALO 3.4 (ext) - Bit User Fast Friendly Aid to Logical Operation ».
Si tout se passe bien (téléchargement réalisé) vous devez voir apparaître le message « done »
dans l’HyperTerminal.
b) Exécution du programme
Le programme est maintenant dans la RAM du microcontrôleur, vous pouvez l’exécuter, mais
avant vous pouvez vérifier qu’il y est effectivement (pour ceux qui doutent….) en lançant la
commande suivante pour visualiser le contenu de la mémoire RAM situé à l'adresse 8000 :
MD 8000
Vous devez obtenir l'affichage de la figure ci-dessous et constater que les codes objets du
programme y sont bien.
Pour lancer l’exécution du programme situé à l'adresse 8000 en RAM tapez la commande :
GO 8000
Le programme s’exécute, on ne peut l’arrêter que par un appui sur la touche « reset » sur la
carte du microcontrôleur.
3. Question préalable
3.1. Branchement relatif
Expliquer la valeur F9 du BRA BOU, vous pouvez vous référer à la documentation en annexe
pour le détail sur l'instruction BRA.
DUT 1 Informatique, CNAM Paris TP n°1 Microcontrôleurs 7/22
Nous en étudierons les principaux modes d’adressage à travers plusieurs exemples. Le tableau
suivant présente quelques exemples pour chaque mode d’adressage.
Mode
Type de l’opérande Exemple Signification
d’adressage
LDAA #$7A
LDAA #%01111010
LDAA #122
LDAA #@172
LDD #$A0FF
LDX #$C000
Immédiat Valeur (1 ou 2 octets)
A 7Ah
A 7Ah
A 7Ah
A 7Ah
D A0FFh
X C000h
LDAA $89 A (M[(89h)])
Direct Adresse sur 1 octet (8 bits)
STAA $12 M[(12h)] (A)
PCR (PCR)
Saut (1 octet en signé) par rapport BEQ étiquette1
Relatif
au Compteur de Programme BRA étiquette2 Fin de décodage d’instruction +
Saut
INCA A (A) + 1
Inhérent Aucun
CLRA A0
Créez des fichiers textes pour vos programmes et assemblez-les, comme indiqué
précédemment, enfin téléchargez-les dans le kit 68HC11EVBU2 et exécutez-les en pas à pas.
RM P
Saisir alors la valeur 8000 puis appuyez à nouveau sur la touche <Entrée>
Pour lancer l’exécution de 2 lignes du programme en mode pas à pas à partir de la position
actuelle du compteur de programme, tapez la commande suivante et appuyez sur la touche
<Entrée> :
T2
>T 2
CLRA P-8001 Y-FFFF X-FFFF A-00 B-FF C-94 S-0041
LDAA #$4A P-8003 Y-FFFF X-FFFF A-4A B-FF C-90 S-0041
>
Pour connaître l’ensemble des commandes possibles avec la carte 68HC11, tapez la
commande suivante et appuyez sur la touche <Entrée> :
a) Adressage immédiat
En adressage immédiat, il faut impérativement faire précéder l’opérande du symbole #.
Vérifiez sur la maquette les valeurs que vous obtenez. Pour cela, vous devrez créer un
programme avec les lignes ci-dessus, l'assembler et le charger dans la mémoire RAM
du microcontrôleur. Vous exécuterez ensuite votre programme en mode pas-à-pas à
l'aide de la commande : T 1
LDD #32000
LDD #$AFEF
LDAA #$33
ADDA #$27
SUBA #$0A
b) Adressage direct et étendu (accès direct au contenu des cases mémoire par leur adresse)
Remarque : Il est courant de confondre adressage étendu et adressage immédiat (se souvenir
qu’en adressage immédiat, il faut obligatoirement utiliser le préfixe #). Les conséquences en
sont catastrophiques. Faire donc très attention.
MD 30
R7 200ohm
PORT A du 68HC11 VCC
U1 5V
7 13 R1 200ohm
PA4 1 A OA
12
PA5 2 B OB
11 Com
PA6 6 C OC R2 200ohm
10
PA7 D OD
9
3 OE
15 R3 200ohm
5 LT OF
14
4 RBI OG A B CDE F G
BI/RBO R4 200ohm
74LS47N
R5 200ohm
R6 200ohm
VCC
5V
DUT 1 Informatique, CNAM Paris TP n°1 Microcontrôleurs 11/22
Une valeur de 4 bits envoyée sur les broches PA7 à PA4 du microcontrôleur devrait
provoquer son affichage en décimal sur l’afficheur 7 segments. Seulement, la broche PA7
n’est pas « configurée » initialement comme une sortie comme le sont initialement les broches
PA6 à PA4 (voir schéma ci-dessous).
Port A
Pour programmer la broche PA7 en sortie, il faut mettre à l’état « 1 » le bit DDRA7 à
l’adresse 1026h.
LDAA #$80
STAA $1026 ; PA7 en sortie
Pour envoyer maintenant une valeur sur les broches PA7 à PA4, il suffit de l’écrire à l’adresse
$1000 correspondant aux entrées/sorties du Port A.
Essayer maintenant toutes les combinaisons possibles pour PA7 à PA4 et notez les
valeurs affichées.
Indice : vous pouvez aller consulter l'annexe 2 en fin de sujet pour obtenir les différentes
valeurs.
LDX #200
BOU DEX
NOP
NOP
BNE BOU
Affichage chiffre C1 : 1s
Affichage chiffre C2 : 1s
LDY #1000
BOU1 LDX #200
BOU DEX
NOP
NOP
BNE BOU
DEY
BNE BOU1
Ecrire le programme qui fera alterner toutes les secondes l’affichage de 2 chiffres.
L’assembler, le tester et le mettre au point sur la maquette. Ne pas oublier de
configurer la broche PA7 en sortie !
ORG $8000
LDAA #$80
STAA $1026 ; PA7 en sortie
CLRA
STAA $1000 ; Affichage "0"
Constatation ?
Modifier ce programme pour que l’affichage varie toutes les 0.1 seconde.
ORG $8000
LDAA #$80
STAA $1026 ; Pa7 en sortie
CLRA
STAA $1000 ; Affichage "0"
TAB_CODES fcb $10, $30, $50, $70, $90, $20, $40, $60, $80,$00
Modifier ce programme pour afficher d’abord les chiffres pairs, puis les chiffres
impairs.
Modifiez ce programme afin qu’il affiche les 4 bits de poids fort contenus dans les
cases mémoires allant de l’adresse B800h à l’adresse B810 h.
Pour tester votre programme, mettez au préalable des valeurs connues aux adresses
B800 h à B810 h.
DUT 1 Informatique, CNAM Paris TP n°1 Microcontrôleurs 15/22
Tableau 2/6
DUT 1 Informatique, CNAM Paris TP n°1 Microcontrôleurs 17/22
Tableau 3/6
DUT 1 Informatique, CNAM Paris TP n°1 Microcontrôleurs 18/22
Tableau 4/6
DUT 1 Informatique, CNAM Paris TP n°1 Microcontrôleurs 19/22
Tableau 5/6
DUT 1 Informatique, CNAM Paris TP n°1 Microcontrôleurs 20/22
Tableau 6/6
DUT 1 Informatique, CNAM Paris TP n°1 Microcontrôleurs 21/22