You are on page 1of 83

Microcontrôleur HC11

Département: Génie Industriel

Filière : Génie Electrique

ENSA4 GE

Responsable : Pr. S. CHABAA


Histoire de l’informatique: développement
matériel

Par nature paresseux, l’homme a toujours cherchés


à simplifier et améliorer sa façon de calculer, à la fois
limiter ses erreurs et gagner du temps

2
En 1500 avant Jesus- Christ (J. C.): le boulier (utilisé encore
dans certain pays)

Un boulier chinois Un boulier japonais

En1641: LA Pascaline (Machine à calculer des balaise Pascal)

3
C’est quoi un système informatique?
Est-ce que l’utilisateur utilise directement un ordinateur

Est-ce qu’il y’a un intermédiaire entre l’utilisateur et l’ordinateur

Utilisateur Ordinateur
C’est quoi un système informatique?

Deux éléments indissociable:

•Système d’exploitation
•ordinateur

Utilisateur Ordinateur
C’est quoi un système informatique?
C’est un ensemble des
moyens informatiques et de
télécommunication ayant pour finalité
d'élaborer, traiter, stocker, acheminer,
présenter ou détruire des données.

Objectif : Automatiser le traitement de l’information.


CPU

Matériel & logiciel


Unité de Bus de communication
Controle

Arithmetic
Logic
Unit
MEMOIRE UNITE UNITE
Programme Stockage DE D’ENTREE
Registres Stockage Donnée SORTIE
Historique

•Mini-Ordinateur : première intégration, cet ordinateur contient maintenant une


Unité Centrale de traitement sur une seule carte.
• Microprocesseur : deuxième intégration, l'Unité Centrale est contenue dans un
seul circuit, c'est le C.P.U. . Ce fut le 4004 en 1971, le 8008 en 1972 puis le 8080 en
1974. Ce dernier eut un tel succès qu'il est considéré comme le père de nos
microprocesseurs et microcontrôleurs d'aujourd'hui.
•Micro-Ordinateur : c'est le nom qui désignera désormais un ordinateur conçu
autour d'un microprocesseur.
• Microcontrôleur : troisième intégration, l'ensemble des 3 unités (centrale,
mémoires et périphériques) sont maintenant contenues dans un seul circuit. Ce fut
le 8048 en 1976 puis le 8051 en 1980.
• Micro-ordinateur embarqué : C'est un ordinateur spécialisé et conçu autour d'un
microcontrôleur. Il est capable de réagir à des évènements plus rapides.
Architecture d’un système informatique
Microprocesseur
Architecture d’un système informatique
Microprocesseur
Microcontrôleur

Un microcontrôleur est un circuit intégré qui contient


un petit système informatique.
Microcontrôleur
Un microcontrôleur se présente sous forme d’un circuit
électronique intégré réunissant un certain nombre
d’élements construit autour d’un microprocesseur.
Utilité d'un μC
Pour comprendre l'utilité d'un μC, on peut considérer un petit
exemple. Soient trois interrupteurs I1, I2, I3 et trois lampes L1,
L3 et L3.
Problème 1 : Ki allume Li, i= {1; 2; 3}.
Solution 1 : un simple petit montage électrique suffit.
Problème 2 : les trois interrupteurs ensemble allument L1, Si seuls I1 et I3 sont
actionnés, L3 s'allume. Si I1 ou I2 sont actionnés, L2 doit s'allumer.
Solution 2 : Il suffit de mettre en place une logique câblée avec des
portes comme celle de la figure ci-dessous.

3
Problème 3 : si les trois interrupteurs sont actionnés, L1
s'allume pendant cinq secondes puis se met à clignoter. Si
seuls I1 et I3 (mais pas I2) sont actionnés, L1 s'allume et L2
clignote pendant 10s. Si I1 et I2 sont actionnés, L1 et L3
clignotent en phase alors que L2 clignote en opposition.

Solution 3 : pour un tel problème, il est déraisonnable


d'envisager un montage électrique ou encore une logique
câblée. En revanche, il est tout à fait judicieux de
programmer un microcontrôleur à cet effet.
Fabricants de microcontrôleurs

• Atmel
• Dallas Semiconductor
• Freescale Semiconductor
• Hitachi Semiconductor
• Intel
• Microchip
• National Semiconductor
• Renesas
• STMicro
• Texas Instruments
• Zilog
Domaines d’applications
Automates programmable: Electroménager
domotique
-contrôle -Cuisinière, four micro- onde
-supervision -Lave vessaille
-régulation des processus -…
--Robotiques
- Contrôle du Traffic …
Applications

Médicales
Transports Télécommunication

Automobile, Téléphones portables


Moniteurs cardiaques véhicule électrique
Moniteurs rénaux Interface homme-machine
Appareils de dialyse ABS, Calculateur d’injection
Gestion d’écrans graphiques
Microcontrôleur

Le microcontrôleur est dimensionné pour « l’embarqué »


il est beaucoup plus facile à mettre en ouevre qu’un
microprocesseur

Avantages inconvénient
ARCHITECTURE DES MICROPROCESSEURS

• L'architecture CISC "ordinateur avec jeu d'instructions


complexes")
Traitement des instructions complexes, qui sont directement
câblées sur les circuits électroniques, c'est-à-dire que certaines
instructions difficiles à créer à partir des instructions de base sont
directement imprimées sur le silicium de la puce afin de gagner
en rapidité d'exécution sur ces commandes.
L'inconvénient de ce type d'architecture provient du fait que des
fonctions supplémentaires sont imprimées sur le silicium,
d'où un coût élevé.

17
• L'architecture RISC :"ordinateur à jeu d'instructions
réduit")

Contrairement à l'architecture CISC, un processeur


utilisant la technologie RISC n'a pas de fonctions
supplémentaires câblées. Cela impose donc des
programmes ayant des instructions simples
interprétables par le processeur. Cela se traduit par
une programmation plus difficile et un
compilateur plus puissant.

18
On utilise un microcontrôleur pour construire des
applications compactes, cependant la taille du
programme, le nombre de données traitées et le nombre
de liaisons possibles avec la périphérie sont limités par
construction.
Un choix pertinent du microcontrôleur doit être effectué.

Pour le MC68HC11 il existe une famille de composant


qui présente des caractéristiques diverses en :
- mémoire [rom, eprom]1, eeprom2 (4k, 8k, 12k)1 (512,
2k)2
- mémoire ram (256, 192, 512)
- périphériques
Microcontrôleurs

Language utilisé

Assembleur

C++

Java

Other

20
Microcontrôleurs

Motorola 68HC11E9 (features)


• ROM (12KB), EEPROM (512B), RAM (512B)

• Counter/Timer system

• A/D converter
• Parallel I/Os

• Expansion bus

• Serial communication

21
Microcontrôleurs
Microcontrôleurs
Motorola 68HC11

• La famille 68HC11 est construite autour d’un


microcontrôleur fonctionnant sur un bus de données
de 8 bits.
• Exemple de reference: MC68HC11E1CFN3

24
Motorola 68HC11
Produit de la famille 68HC11

26
Affectations des broches du 68HC11E

27
Affectations des broches du 68HC11F1
Description générale
Synoptique interne de base:
Mémoires :
- RAM de 256 octets +
- ROM ( programme) +
- EEPROM ( données)
Ports parallèles :
- A, B, C, D et E
bidirectionnels ou unidirectionnels.
Ports partagées :
Exemple : Port E = entrée du CAN.
Entrées séries :
- Synchrone (SPI). Asynchrone (SCI)
Timer composé de :
- Plusieurs timers à usage général
- 1 accumulateur d'impulsions,
- Horloge temps réel
- Watchdog surveiller le µC.
- 1 CAN 8 bits à 8 entrées.
- Traitement d’Interruptions et
Horloge.
Description générale
Signaux disponibles :
* 2 Entrées d’Interruption : /IRQb, /XIRQ
* EXTAL et XTAL : connexion Quartz, RC ou Horloge externe
* Entrée-Sortie /RESET. E: Raz, S: Défaut interne détecté par le WD)
* VRL et VRH : Références basse et haute du CAN
* VRL et VRH : Références basse et haute du CAN
* MODA et MODB : sélection des modes de fonctionnement
- MODA, MODB=0,1 Mode Circuit seul normal (bit SMOD=0 du Registre HPRIO)
- MODA, MODB=1,1 Mode Etendu normal (bit SMOD=0 du Registre HPRIO)
- PA0 à PA2 : Entrées Port A, ou Entrées de capture IC3 à IC1 du timer.
* PA0 à PA7 (partagées avec le Timer) :
- PA0 à PA2 : Entrées Port A, ou Entrées de capture IC3 à IC1 du timer.
- PA3 à PA6 : Sorties Port A ou Sorties de comparaison OC1 à OC5 du timer.
- PA7 : E/S Port A ou Entrée de capture ou Sortie de comparaison ou Entrée
d'accumulateur d'impulsions.
31
Les modes d ’utilisation
• Le 68hc11 peut être utilisé dans plusieurs
configurations qui conditionnent ses
performances en terme :
– de mémoires
– de périphériques
• Il y a 4 modes d ’utilisation
– Monochip
– Étendu Multiplexé
– Bootstrap
– Test
32
Les modes d ’utilisation - monochip
• En mode monochip, le composant est utilisé
seul.
• Il doit donc posséder: 68HC11
– de la mémoire programme (ROM)
– et de la mémoire donnée (RAM)
• exemple : 68HC811E2 E/S
– 2k octets d ’EEPROM
– 256 octets de RAM

Périphérie
33
Les modes d ’utilisation - monochip

I/F SERIE CONTRÔLE


RESET
ET
MODE

HC11
E2
ALIM. 5V

34
Les modes d ’utilisation - monochip

En mode monochip, le 68HC11F1 dispose de:


1Ko de RAM interne allant de $0000 à $03FF
512 octets d'EEPROM (mémoire morte
effaçable électriquement)
96 octets de registres internes situés entre $1000
et $105F
Les modes d ’utilisation - étendu
• En mode étendu le 68hc11 est utilisé avec
des composants externes :
– mémoires ROM, RAM,
– périphériques d ’entrées-sorties
• Cela nécessite une logique de décodage
d ’adresses
Bus de contrôle

68HC11 Décodage EPROM RAM E/S

Bus de données
Bus d ’adresses 36
Les modes d ’utilisation - étendu

PERIPH
RAM ou ROM
E/S

68HC11F1
I/F SERIE

37
Les modes d ’utilisation - bootstrap
• En mode bootstrap le 68hc11 est utilisé
normalement seul.
• Dans ce mode le programme applicatif (ROM) est
téléchargé dans une EEPROM interne par la voie
de communication série asynchrone.
• Un logiciel interne en ROM gère le mode
bootstrap
I/F RS232
68HC11 Ordinateur PC

EEPROM
Rom boot
38
Les modes d ’utilisation - test
• Ce mode est réservé à des opérations
particulières liées au test en fin de fabrication
du composant
• Il permet l ’accès à toutes les fonctionnalités
du 68HC11 notamment au registre CONFIG
• Il est donc délicat d ’utilisation !!

39
Description générale

Signaux disponibles :
* PC0 à PC7 :
- Mode Circuit seul : E/S parallèles.
- Mode Etendu : lignes des données et/ou 8 bits de poids faible
d'adresses.

* PB0 à PB7 :
- Mode Circuit seul : Sorties Port B.
- En mode étendu : 8 bits de poids forts d'adresses.

* PD0 à PD5 : E/S Port D ou lignes des ports série de la SPI et de SCI.

* PE0 à PE7 : Entrées Port E ou Entrées du CAN.


40
Unité centrale et
Mode d’adressage
L'unité centrale

L’unité centrale du MC68HC11 offre des possibilités


nouvelles par rapport au M6800. les principales sont:
Des manipulations de bits sur tout l’espace
mémoire;
La multiplication câblée;
La division entières ou fractionnaire sur 16 bits;
Des opérations sur 16 bits;
Un deuxième index sur 16 bits.
L'unité centrale
L'UC du 68HC11 est représentée comme suit :

7 Accumulateur A 0 7 Accumulateur B 0 A:B


15 Double accumulateur D 0 D

15 Index X 0 IX

15 Index Y 0 IY Registres Internes

15 Pointeur de pile SP 0 SP

15 Compteur ordinal PC 0 PC

Codes conditions S X H I N Z V C CCR


Retenue (Carry)
Interdiction du mode ST OP Débordement (oVerflow)
Masque d'interruption XIRQ Zéro (Zero)
Masque d'interruption IRQ Négatif (Negative)
Demi-retenue (Half carry)
43
L'unité centrale

Accumulateurs A, B et D

Ils sont utilisés pour mémoriser les opérations et les


résultats de calculs arithmétiques ou logiques ou de
manipulations de données.
L'unité centrale

Registre d’index X(IX) et Y (IY)

Ils sont utilisés dans le mode d’adressage indexé.

En le mode d’adressage indexé:


L’adresse de l’opérande et obtenue en additionnant le
contenu de l’index au décalage sur 8 bits spécifié dans
l’instruction
L'unité centrale

Registre de Pile ou Pointeur de pile (SP)

Le microcontrôleur 68HC11 dispose d’une gestion


automatique de la pile (stack) qui peut être situé dans
n’importe quelle zone de l’espace mémoire 64 Ko
adressable par microprocesseur .
L'unité centrale

Compteur de programme

Le compteur de programme est un compteur 16 bits qui


pointe en permanence sur l’adresse de la prochaine
instruction ou donnée qui doit être traitée. Son contenu se
modifie automatiquement en fonction du déroulement du
programme, ou aussi en fonction du mode d’adressage.
L'unité centrale
Registre d'état: Condition Code Register (CCR)

D7 D6 D5 D4 D3 D2 D1 D0
Condition Code Register
S X H I N Z V C (CCR)

• CCR est un registre de 8-bit.


• H, N, Z, V, C les bits qui indiquent l'état du résultat des
opérations arithmétiques et logiques.
• S, X, I les bits qui indiquent les bits pour masquer.

48
L'unité centrale
Registre d'état: Condition Code Register (CCR)
7 6 5 4 3 2 1 0

S X H I N Z V C

Stop Disable Carry

X-Interrupt Mask Overflow

Zero
Half Carry
Negative
I-Interrupt Mask

49
L'unité centrale
Registre d'état: Condition Code Register (CCR)
7 6 5 4 3 2 1 0

S X H I N Z V C

Stop Disable Carry

X-Interrupt Mask Overflow

Zero
Half Carry
Negative
I-Interrupt Mask

50
L'unité centrale
Registre d'état: Condition Code Register (CCR)

N (Negative) bit

• Quand le resultat de l’oprération arithmétique et logiques est négatif ;


donc
N = “1” (MSB = “1”)
• Sinon le résultat est positive; donc
N = “0” (MSB = “0”)
Exemple

(1) LDAA #$7F ; N = “0” , msb = “0”


(2) LDAB #$80 ; N = “1” , msb = “1”
51
L'unité centrale
Registre d'état: Condition Code Register (CCR)
7 6 5 4 3 2 1 0

S X H I N Z V C

Stop Disable Carry

X-Interrupt Mask Overflow

Zero
Half Carry
Negative
I-Interrupt Mask

52
L'unité centrale
Registre d'état: Condition Code Register (CCR)
Z (Zero) bit
• Z = “1” -le resultat de la dernière opération egal zero.
- accumulateur contient = $00

• Z = “0” le resultat de la dernière opération est supérier à zero.


- accumulateur contient = $00

Exemple
(1) LDAA #$00 ; Z = “1”, ACCA = 0
(2) LDAB #$01 ; Z = “0”, ACCB > 0
53
L'unité centrale
Registre d'état: Condition Code Register (CCR)
7 6 5 4 3 2 1 0

S X H I N Z V C

Stop Disable Carry

X-Interrupt Mask Overflow

Zero
Half Carry
Negative
I-Interrupt Mask

54
L'unité centrale
Registre d'état: Condition Code Register (CCR)
C (Carry) bit
• C =“1” - addition ou sustraction a eu une retenue.

• C =“0” - après addition ou sustraction


no carry or no borrow.
*Note: le bit C est utilisé aussi dans les opérations de
décalage et de rotation.
Exemple:
LDAA #$80
ADDA #$90 ; C=“1”
WAI ; bit-7 carries “1” to C-bit

55
L'unité centrale
Registre d'état: Condition Code Register (CCR)
7 6 5 4 3 2 1 0

S X H I N Z V C

Stop Disable Carry

X-Interrupt Mask Overflow

Zero
Half Carry
Negative
I-Interrupt Mask

56
L'unité centrale
Registre d'état: Condition Code Register (CCR)

V (Overflow) bit

• V =“1” - résultat est faux, après addition ou


sustraction des nombres signés qui cause
un dépassement.

• V =“0” - résultat est correcte, après addition ou


sustraction des nombres signés qui ne
cause pas un dépassement.

57
L'unité centrale
Registre d'état: Condition Code Register (CCR)
7 6 5 4 3 2 1 0

S X H I N Z V C

Stop Disable Carry

X-Interrupt Mask Overflow

Zero
Half Carry
Negative
I-Interrupt Mask

58
L'unité centrale
Registre d'état: Condition Code Register (CCR)

H (Half-carry) bit
• H =“1” - un 8-bit addition, indique une retenue
du bit-3 au bit-4.
• H =“0” - un 8-bit addition, , n’indique pas une
retenue du bit-3 au bit-4.
Example:
1+1 indique une
retenue
LDAA #% 0011 1000
ADDA #% 0011 1010 ; H=“1”
WAI ; (aprés additon)
59
L'unité centrale
Registre d'état: Condition Code Register (CCR)
7 6 5 4 3 2 1 0

S X H I N Z V C

Stop Disable Carry

X-Interrupt Mask Overflow

Zero
Half Carry
Negative
I-Interrupt Mask

60
L'unité centrale
Registre d'état: Condition Code Register (CCR)

Commande du Registere

I Interrupt Mask

X XIRQ mask

S Disable STOP instructions

Note:

Il est définie par l’utilisateur pour définir au processeur


ce qu’il va faire.
61
Jeu d'instructions
1- Instructions sur l'accumulateur et la mémoire :
* Instructions de chargement, de mémorisation et de transfert.
Fonction Mnémonique Imm Dir Etend Ind. X Ind. Y Inéh
Mise à 0 d'un octet CLR 7F 6F 18 6F
Mise à 0 de l'accu A CLRA 4F
Mise à 0 de l'accu B CLRB 5F
Charge l'accu A LDAA 86 96 B6 A6 18 A6
Charge l'accu B LDAB C6 D6 F6 E6 18 E6
Charge le double accu A LDD CC DC FC EC 18 EC
Tire A de la pile PULA 32
Tire B de la pile PULB 33
Pousse A dans la pile PSHA 36
Pousse B dans la pile PSHB 37
Mémorise l'accu A STAA 97 B7 A7 18 A7
Mémorise l'accu B STAB D7 F7 E7 18 E7
Mémorise le double accu STD DD FD ED 18 ED
Transfert de A dans B TAB 16
Transfert de A dans CCR TAP 06
Transfert de B dans A TBA 17
Transfert de CCR dans A TPA 07
Echange D et X XGDX 8F
62
Echange X et D XGDY 18 8F
Jeu d'instructions
1- Instructions sur l'accumulateur et la mémoire :
* Opérations arithmétiques.

Fonction Mnémonique Imm Dir Etend Ind. X Ind. Y Inéh


Incrémente un octet INC 7C 6C 18 6C
Incrémente A INCA 4C
Incrémente B INCB 5C
Complément à 2 NEG 70 60 18 60
Complémente A à 2 NEGA 40
Complémente B à 2 NEGB 50
Soustrait avec retenue de A SBCA 82 92 B2 A2 18 A2
Soustrait avec retenue de B SBCB C2 D2 F2 E2 18 E2
Soustrait une mémoire de A SUBA 80 90 B0 A0 18 A0
Soustrait une mémoire de B SUBB C0 D0 F0 E0 18 E0
Soustrait une mémoire de D SUBD 83 93 B3 A3 18 A3
Test si zéro ou plus petit TST 7D 6D 18 6D
Test si 0 ou plus petit que A TSTA 4D
Test si 0 ou plus petit que B TSTB 5D
63
Jeu d'instructions
1- Instructions sur l'accumulateur et la mémoire :
* Multiplication et division.
Fonction Mnémonique Inéh
Multiplication (A x B D) MUL 3D
Division entière (D : X X ; r D) IDIV 02
Numérateur, Dénominateur, Résultat et Reste = Entiers 16bits
Division fractionnaire (D : X X ; r D) FDIV 03
Num. et Dénom. = Entiers 16 bits, Résultat et Reste = Fractionnaires 16 bits: $.xxxx
* Opérations logiques.
Fonction Mnémonique Imm Dir Etend Ind. X Ind. Y Inéh
ET A avec la mémoire ANDA 84 94 B4 A4 18 A4
ET B avec la mémoire ANDB C4 D4 F4 E4 18 E4
Bit Test A avec la mémoire BITA 85 95 B5 A5 18 A5
Bit Test B avec la mémoire BITB C5 D5 F5 E5 18 E5
Complément COM 73 63 18 63
Complémente A COMA 43
Complémente B COMB 53
OU Ex A avec la mémoire EORA 88 98 B8 A8 18 A8
OU Ex B avec la mémoire EORB C8 D8 F8 E8 18 E8
OU A avec la mémoire ORAA 8A 9A BA AA 18 AA
64
OU B avec la mémoire ORAB CA DA FA EA 18 EA
Jeu d'instructions
1- Instructions sur l'accumulateur et la mémoire :
* Manipulation et test de bits.
Fonction Mnémonique Imm Dir Etend Ind. X Ind. Y
Bit Test A avec la mémoire BITA 85 95 B5 A5 18 A5
Bit Test B avec la mémoire BITB C5 D5 F5 E5 18 E5
Mise à 0 de bits BCLR 15 1D 18 1D
Mise à 1 de bits BSET 14 1C 18 1C
Branche si bit(s) égal 0 BRCLR 13 1F 18 1F
Branche si bit(s) égal 1 BRSET 12 1E 18 1E

* Décalages et rotations.
Fonction Mnémonique Etend Ind. X Ind. Y Inéh
Décalage logique à droite LSR 74 64 18 64
Décalage logique à droite sur A LSRA 44
Décalage logique à droite sur B LSRB 54
Décalage logique à droite sur D LSRD 04
Rotation à droite ROL 79 69 18 69
Rotation à droite sur A ROLA 49
Rotation à droite sur B ROLB 59
Rotation à gauche ROR 76 66 18 66
Rotation à gauche sur A RORA 46
Rotation à gauche sur B RORB 56 65
Jeu d'instructions

1- Instructions sur l'accumulateur et la mémoire :

* Opérations sur 16 bits.

Fonction Mnémonique Imm Dir Etend Ind. X Ind. Y Inéh


Addition d'une mémoire à D ADDD C3 D3 F3 E3 18 E3
Compare D à une mémoire CPD 1A 83 1A 93 1A B3 1A A3 CD A3
Charge le double accu D LDD CC DC FC EC 18 EC
Décalage logique à gauche sur D LSLD 05
Décalage logique à droite sur D LSRD 04
Mémorise D STD DD FD ED 18 ED
Soustrait une mémoire de D SUBD 83 93 B3 A3 18 A3

66
Jeu d'instructions

2- Instructions sur la pile et les registres d'index :


Instructions utilisables sur les registres d'index X et Y et le pointeur
de pile SP.
Fonction Mnémonique Imm Dir Etend Ind. X Ind. Y Inéh
Tire X de la pile PULX 38
Tire Y de la pile PULY 18 38
Pousse X dans la pile PSHX 3C
Pousse Y dans la pile PSHY 18 3C
Mémorise le registre d'index X STX DF FF EF CD EF
Mémorise le registre d'index Y STY 18 DF 18 FF 1A EF 18 EF
Mémorise le pointeur de pile STS 9F BF AF 18 AF
Transfert de SP dans X TSX 30
Transfert de SP dans Y TSY 18 30
Transfert de X dans SP TXS 35
Transfert de Y dans SP TYS 18 35
Echange D avec X XGDX 8F
Echange D avec X XGDY 18 8F

67
Jeu d'instructions

3- Instructions sur le registre d'état :


Instructions permettent de modifier les bits du registre d'état CCR.
Fonction Mnémonique Inéh
Mise à 0 du bit de retenue CLC 0C
Mise à 0 du masque d'interruption CLI 0E
Mise à 0 du bit de dépassement CLV 0A
Mise à 1 du bit de retenue SEC 0D
Mise à 1 du masque d'interruption SEI 0F
Mise à 1 du bit de dépassement SEV 0B
Transfert A dans CCR TAP 06
Transfert CCR dans A TPA 07

Seul les 3 bits C, I, V du registre d'état peuvent être directement mis à 0 ou à 1. Les instructions
TAP et TPA permettent de compléter les actions possibles sur les bits de CCR.
Pour les indicateurs de signe N et de zéro Z il est possible d'utiliser des instructions qui ont une
action directe sur leurs valeurs.
Par exemple :
* l'instruction CLRB met l'indicateur N à 0 et l'indicateur Z à 1
* l'instruction LDAA #$80 permet de mettre N à 1 et Z à 0. 68
Jeu d'instructions
4- Instructions de contrôle du programme :
* Sauts
Fonction Mnémonique Dir Etend Ind. X Ind. Y Inéh
Saut JMP 7E 6E 18 6E

* Branchements.
Fonction Mnémonique Rel Dir Ind. X Ind. Y Commentaire
Branche si négatif BMI 2B N=1?
Branche si non nul BNE 26 Z=0?
Branche si positif ou nul BPL 2A N=0?
Branche toujours BRA 20
Branche si bits à 0 BRCLR 13 1F 18 1F
Branche jamais BRN 21
Branche si bits à 1 BRSET 12 1E 18 1E
Branche si pas de dépassement BVC 28 V=0?
Branche si dépassement BVS 29 V=1?

69
Jeu d'instructions
4- Instructions de contrôle du programme :

* Appel et retour de sous-programmes : 127 pas en avant ou 128 pas en arrière


Fonction Mnémonique Rel Dir Etend Ind. X Ind. Y Inéh
Branche à un sous-programme BSR 8D
Saut à un sous-programme JSR 9D BD AD 18 AD
Retour de sous-programme RTS 39

* Interruptions : Instructions associées avec CLI et SEI Contrôle les opérations


d'interruptions
Fonction Mnémonique Inéh
Retour d'interruption RTI 3B
Interruption programme SWI 3F
Attente d'interruption WAI 3E

* Autres instructions.
Fonction Mnémonique Inéh
Pas d'opération NOP 01
Arrête l'horloge STOP CF
Test (réservée au mode test) TEST 00
70
Modes d'adressage

Symboles utilisés :

* Absence de symbole devant un nombre Décimal.


* ($) Hexadécimal.
* (@) Octal.
* (%) Binaire.
* (') Caractère suivant remplacé par son code en ASCII.
* (*) Commentaire.
* (#) Adressage de type Immédiat.
* (,) Adressage de type indexé.

71
Modes d'adressage

2- Adressage immédiat :
* Opérande Valeur immédiate qui suit le mnémonique.
Exemples

72
Modes d'adressage

3- Adressage direct :

* Opérande Adresse effective de la donnée manipulée


Codée sur 1 seul octet Adresse $00 à $FF.

73
Modes d'adressage

4- Adressage étendu :

* Opérande Adresse effective de la donnée manipulée


Codée sur 2 octets : Octet gauche Poids fort d’adresse.

74
Modes d'adressage

5- Adressage indexé :

* Fait intervenir 2 facteurs dans le calcul d'adresse effective :


Contenu de l'index X ou Y et une donnée (déplacement ou offset).

2 "Sous-modes"

75
Modes d'adressage

5-1. Adressage indexé avec déplacement nul :

* Adresse effective = Contenu de X ou Y (+ 0).


Exemple :
LDD 0,X * Notation normale 001D EC 00
CMPA ,X * Autre notation 001F A1 00

76
Modes d'adressage

5-2. Adressage indexé avec déplacement non nul :


* Adresse effective = Contenu de X ou Y (Octet non signé suivant
code de l’instruction).
Remarque : Déplacement varier seulement de $00 à $FF.
Exemples :
DATA EQU $FE
LDD 4,X * 0021 EC 04
ADDD $25,X * 0023 E3 25
LDY DATA,X * 0025 1A EE FE

TABLE EQU $FE * TABLE égal à $F000


CODE EQU $80 * CODE égal à 80 en hexa.
LDX #TABLE * Charge X avec $F000
LDAA CODE,X * Charge A avec contenu de $F080
77
ADDA 0,X * Additionne A à contenu de $F000
Modes d'adressage

5-2. Adressage indexé avec déplacement non nul :


Autre exemple :
Adresse RAM Contenu RAM
...
MEM_10 EQU $0010 27
...
$10
$1000 32
REGBAS EQU $1000 ...
$1031 0F
ADR1 EQU $31

Mode d'adressage Registre


LDAA MEM_10 Direct A 27
LDAA REGBAS Etendu A 32
LDX #REGBAS Immédiat X 1000
LDAA ADR1,X Indexé A 0F
78
Modes d'adressage

6. Adressage relatif :

* Adresse effective = Valeur courante du PC + 2 + Déplacement. (PC


pointe toujours sur l'instruction suivante).
Remarque : Dépl. codé sur 1 octet signé (-128 et +127 = 00 à $FF).
Exemple :
ICI EQU *
LDA #$AA * 0028 86 AA
LABAS STA $1000 * 002A B7 10 00
BEQ ICI * 002D 27 F9
LDY 0,X * 002F 1A EE 00
BRA LABAS * 0032 20 F6

79
Modes d'adressage

6. Adressage relatif :

Autres exemples :
TEST LDAA PORTC * Lecture du port C
BMI TEST * Continu la lecture si PC7 = 1

BEQ REL_LECT * Si égal, branche à REL_LECT


BRA SUITE * Passe à SUITE
REL_LECT LDAA PORTC * Lecture du port C
JMP LECT * Saut à LECT
SUITE ...

80
Modes d'adressage

7. Adressage « Bit » ou « Manipulation de bit » :

2 "Sous-modes"
- Mode "Bit Set Clear" Positionnement de bit,
- Mode "Bit test and branch" Test de bit et branchement.

81
Modes d'adressage

7-1. Mode positionnement de bit :


* Syntaxe :
INSTRUCTION OPERANDE MASQUE

MASQUE = le ou les bits de OPERANDE à manipuler par mise à 1 des


bits correspondants.

OPERANDE en adressage Direct ou Indexé


MASQUE toujours en Immédiat sans #.

Exemples :
BCLR PORTB %00110001 * Mise à 0 de bits 0, 4 et 5 de PORTB
BSET 2,X %00001001 * Mise à 1 de b0 et b3 du contenu de (X+2)
82
Modes d'adressage

7-2. Mode test de bit et branchement :


* Syntaxe :
INSTRUCTION OPERANDE MASQUE SAUT

MASQUE = le ou les bits de OPERANDE à tester par mise à 1 des bits


correspondants.
SAUT = Déplacement codé sur 8 bits signés.

OPERANDE en adressage Direct ou Indexé


MASQUE toujours en Immédiat sans #.

Exemples :
BRCLR TFLG1 $80 BOUCLE * Si b7 de TFLG1=0 aller à BOUCLE
BRCLR 0,Y %01000000 WAIT * OU
BRCLR ,Y $40 WAIT * Si b6 de case (pointée par Y)=0 Aller à
83
WAIT

You might also like