Vous êtes sur la page 1sur 25

Cours du MC 6809/Pr. A.

SERTI

Systme Microprocesseur
I- Architecture interne dun systme Microprocesseur :
Larchitecture interne dun systme Microprocesseur se compose essentiellement de trois blocs : le
microprocesseur, la mmoire et les entres/sorties. Ces trois blocs sont relis entre eux par trois bus de
communication qui sont le bus de donnes, le bus dadresses et le bus de commande.
Bus de donnes (8 bits)

UCT

Mmoire

Entres/Sorties

Bus dadresses (16 bits)

Bus de contrle (16 bits)

1.1 Le microprocesseur :
Un microprocesseur est limplantation en un seul botier, en technologie VLSI, dune unit
centrale de traitement de donnes CPU et dune unit arithmtique et logique ALU. Son
principal travail est de fournir aux autres lments qui lui sont raccords, la synchronisation
ncessaire et le traitement des informations qui lui sont achemines.
1.2 La mmoire :
Cest la partie o lon retrouve les programmes excutables et les donnes traiter. Elle est
divise en deux parties, qui sont la mmoire morte ou lecture seule et la mmoire vive ou la
mmoire lecture/criture.
1.2.1 Mmoire morte :
Cest la mmoire de lecture, elle contient le programme du systme. Elle est appele ROM
(Read Only Memory), son avantage est dtre permanente, son contenu ne disparat pas quand
le systme nest pas aliment. La ROM contient un programme de chargement initial ou
moniteur qui permet le fonctionnement du systme ds la mise sous tension.
1.2.2 Mmoire vive :
Cest la mmoire de lecture et dcriture du systme quon appel RAM (Random Access
Memory). Le contenu de ce type de mmoire est perdu lorsque lalimentation est coupe. La
RAM devra tre charge, avant utilisation, partir du clavier ou partir dune mmoire de
masse (disque, ).

-1-

Cours du MC 6809/Pr. A. SERTI

II- Les entres/Sorties :


Les entres/Sorties sont ncessaires pour que le microprocesseur communique avec lenvironnement
extrieur et videment avec lutilisateur.
III- Les bus de communication :
Evidement, pour que le systme fonctionne, il doit y avoir une communication entre le
microprocesseur, la mmoire et les entres/sorties. Cette communication est ralise laide de trois
bus qui regroupent les signaux, selon leur fonction.
3.1 Le bus de donnes :
Cest un bus bidirectionnel (8 bits) sur lequel transitent les donnes changes par les lments
du systme.
3.2 Le bus dadresses :
Cest un bus unidirectionnel (16 bits), manant du microprocesseur et se propageant vers les
dispositifs quil peut adresser. Ladresse quil porte permet datteindre une case mmoire ou un
registre spcifique avec lequel une opration est dsire.
3.3 Le bus de contrle :
Cest un groupe de lignes issues du microprocesseur et reliant ce dernier dautres dispositifs.
Son rle est de vhiculer les signaux destins assurer la synchronisation et la commande de
lensemble du systme. Par exemple, la ligne Reset et R/W (lecture/criture), les lignes
dinterruptions et lhorloge appartiennent ce bus.
IV- Le microprocesseur 6809 :
Le MC6809 est un microprocesseur 8 bits trs rapide et dot de caractristiques supportant les
techniques de programmation modernes telles que la position indpendante du code et la
programmation modulaire. Diffrentes versions du MC6809 sont offerte, voici la dsignation du
numro de code :

MC 68 A 09 C P
Botier :
P=Plastique
L=Cramique

Circuit intgr de
Motorola
Famille M6800

Plage de temprature :
Vide = 0 70
C = -40 85

Vide = 1Mhz
A = 1.5 Mhz
B = 2Mhz
Dsignation de la pice pour
la famille M6800

-2-

Cours du MC 6809/Pr. A. SERTI

4.1 Brochage du MC6809 :


VSS
/NMI
/IRQ
/FIRQ
BS
BA
VCC
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

M
C
6
8
0
9

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

/HALT
XTAL
EXTAL
/RESET
MRDY
Q
E
/DMA
R//W
D0
D1
D2
D3
D4
D5
D6
D7
A15
A14
A13

4.2 Alimentation :
Le microprocesseur 6809 est aliment par une tension unique de +5 volts, 5 % sur la broche
VCC. La broche VSS constitue la masse du botier (0 volt).
4.3 XTAL et EXTAL :
Ce sont sur ces broches que le cristal est install afin de dterminer la vitesse dopration. Le
quartz ou la frquence externe est quatre fois la frquence de travail dsire. On retrouve sur
ces broches, une onde sinusodale la frquence du crystal dont lamplitude est denviron 2.5
volts. Une horloge TTL peut tre branche la place du crystal sur la broche EXTAL, XTAL
est relie la masse.
4.4 E et Q :
Dbut du
cycle

Fin du
cycle

E
Mmorisation des donnes

Q
Adresse valide

-3-

Cours du MC 6809/Pr. A. SERTI

E est le signal dhorloge du systme pour la synchronisation avec les priphriques. Le signal Q
est un signal la mme frquence mais dphas de + 90 par rapport au signal E du CPU. Les
adresses du CPU sont valides partir du front montant de Q. Les donnes sont mmorises sur
un front descendant de E.
4.5 /RESET :
Un niveau bas sur cette entre entrane une rinitialisation du microprocesseur :
- Linstruction en cours est arrte
- Le registre de page directe (DPR) est mis zro
- Les interruptions /IRQ et /FIRQ sont masques
- Linterruption /NMI est dsactive
Le vecteur RESET est ladresse $FFFE. Ladresse constitue par les cases mmoires $FFFE
et $FFFF est charge dans le compteur de programme (PC) puis le microprocesseur excute le
programme correspondant partir de cette adresse.
4.6 MRDY :
Cette entre de commande Memory Ready permet lallongement du cycle dhorloge E afin de
ralentir le microprocesseur lorsquil tente de communiquer avec des dispositifs plus lents.
Normalement MRDY est branche 5 volts. On peut allonger E par des multiples de de
cycle machine et sa valeur maximale est de 10 microsecondes.
4.7 Bus de donnes D0 D7 :
La communication entre le microprocesseur et les autres botiers se fait par lintermdiaire dun
bus de donnes bidirectionnel de 8 bits. Les lecteurs de bus du CPU sont en logique trois
tats.
4.8 Bus dadresses A0 A15 :
Le transfert des adresses du microprocesseur vers le bus dadresses du systme se fait par
lintermdiaire de 16 broches unidirectionnelles. Lorsque le microprocesseur excute un cycle
de travail interne, toutes les lignes dadresses sont un niveau haut, donc ladresse est $FFFF.
De plus, la ligne R//W est positionne un niveau haut (lecture) et les lignes dtats BA et BS
sont au niveau 0 (fonctionnement normal). Les lecteurs de bus sont en logique trois tats.
4.9 R//W :
Cette broche de sortie dtermine la direction de transfert sur le bus de donnes. Si R//W=1, le
microprocesseur est en lecture, D0 D7 sont en entres. Si R//W=0, le microprocesseur est en
criture, D0 D7 sont en sorties. Cette broche est en tat de haute impdance lorsque le
microprocesseur libre les bus.
4.10 /HALT :
Cette entre permet dinterrompre le droulement dun programme de faon matrielle. Le
microprocesseur termine linstruction en cours puis positionne BA et BS un niveau haut
(libration des bus). Tant que la ligne /HALT est 0, le microprocesseur ne travail pas, il
reprend la suite du programme lorsque la ligne remonte 1. Aucun registre nest affect durant
larrt.
Tant que le microprocesseur est larrt :
- Les horloges E et Q fonctionnent normalement
- Les demandes dinterruptions /IRQ et /FIRQ sont masques
- Les demandes dinterruptions prioritaires /RESET et /NMI sont prises en compte,
mais leur traitement est retard.

-4-

Cours du MC 6809/Pr. A. SERTI

4.11 /DMA :
DMA : Direct Memory Access
Cette entre permet de suspendre lutilisation des bus par le CPU pour faire un accs direct la
mmoire. Le passage ltat bas de /DMA entrane larrt du programme la fin de
linstruction en cours. BA et BS passent un niveau 1 et indiquent la disponibilit des bus au
circuit demandeur. Aprs 16 cycles, le CPU reprend les bus pour un rafrachissement interne.
Evidement les lignes BA et BS nous informent de cet tat.
4.12 BA et BS :
BA : Bus Available, BS : Bus State
Ce sont des lignes de sorties qui indiquent ltat du microprocesseur. Lorsque BA=1, les lignes
A0 A15, D0 D7 et R//W sont dans un tat de haute impdance. Les signaux BA et BS sont
trs utiles pour les applications possdant un priphrique capable de grer les bus dadresses et
de donnes la place du microprocesseur. Les quatre combinaisons possibles des lignes BA et
BS permettent de connatre chaque instant ltat du microprocesseur. Ces indications sont
valides sur le front montant de Q.
- BA BS = 0 0 le microprocesseur est en fonctionnement normal. Il gre les bus
dadresses et de donnes.
- BA BS = 0 1 le microprocesseur est en phase de reconnaissance dinterruption
pendant deux cycles. Cet tat correspond la recherche matrielle du vecteur
dinterruption (/RESET, /FIRQ, /IRQ, SWI)
- BA BS = 1 0 ce signal est positionn lorsque le microprocesseur rencontre
linstruction de synchronisation externe (SYNC). Les bus sont en haute impdance
pendant quil attend cette synchronisation sur une ligne dinterruption.
- BA BS = 1 1 cet tat correspond larrt du microprocesseur pendant lautorisation
venant du MPU de permettre un circuit externe de prendre le contrle des bus du
systme. Pendant ce temps les bus du MPU sont en haute impdance.
4.13 /NMI, /FIRQ, /IRQ :
NMI : Non Masquable Interrupt
FIRQ : Fast Interrupt Request
IRQ : Interrupt Request
Ce sont des entres qui permettent dinterrompre le processeur. Les interruptions ont des
niveaux de priorits diffrents. Linterruption NMI est la plus prioritaire, suivie de FIRQ et en
dernier IRQ. Les deux masques (F) et (I) font partie du registre de condition (CCR).
Lorsquune interruption est demande et nest pas masque, un programme dinterruption est
excut. Lorsque celui-ci est termin, le microprocesseur retourne au programme interrompu
pour complter son excution.
V- Dcodage dadresses :
Le dcodeur dadresses a pour fonction de gnrer des signaux pour la slection des diffrents botiers
avec lesquels le microprocesseur doit communiquer. Pour viter que deux botier rpondent
simultanment et crent alors un conflit sur les bus, chaque botier doit rpondre une plage
dadresses diffrente des autres botiers. Les portes logiques et les dcodeurs sont les dispositifs
utiliss pour raliser un dcodeur dadresses

-5-

Cours du MC 6809/Pr. A. SERTI

5.1 Ralisation dun dcodeur dadresses :


A

A14
A15

Y0
Y1
Y2
Y3

6809

74LS138
E

7400

/G

A titre dexemple prenons le premier dcodeur dadresses du systme microprocesseur. On


peut remarquer que seules quelques lignes du microprocesseur sont branches sur le dcodeur
74LS138 et que celui ci est valid par la broche E du 6809. Il faut donc un niveau 1 sur
lhorloge E pour permettre au dcodeur de travailler. De plus se sont les lignes dadresses A14
et A15 qui dcident quelle sortie du 74LS138 qui sera active. Pour tablir la plage dadresses
qui permet dactiver un signal de slection choisi, on dispose, en ordre, les lignes dadresses en
plaant A15 gauche et A0 droite. On place, dans le tableau, les niveaux logiques ncessaires
pour que la sortie soit active. Lexemple suivant montre quelle plage dadresses active la sortie
Y2.
A15 A14 A13 A12
1
0
X
X

A11 A10 A9 A8
X
X
X
X

A7 A6
X
X

A5
X

A4
X

A3
X

A2
X

A1
X

A0
X

Les bits A14 et A15 dcident la sortie active du 74LS138.


On place un X pour toutes les lignes dadresses non utilises. La sortie active ne peut pas tre
influence par le niveau de ces lignes. Ladresse minimale est obtenue en supposant que tout
les X sont un niveau 0, cela correspond ladresse hexadcimale $8000. Pour ladresse
maximale, les X reprsentent des niveaux 1, ladresse obtenue est $BFFF. Donc la plage
dadresses correspondante au signal Y2 est donc $8000 $BFFF.
VI- Architecture interne du microprocesseur 6809 :
Le microprocesseur est compos de plusieurs registres et dune unit arithmtique et logique appele
ALU (Arithmetic Logic Unit).
6.1 Lunit arithmtique et logique :
Lunit arithmtique et logique (ALU) est utilise pour les oprations arithmtiques et
logiques : ET, OU, OU exclusif, inversion, addition, soustraction, complment deux et
multiplication. LALU peut galement effectuer des dcalages droite ou gauche.
6.2 Les registres du 6809 :
Registres pointeurs :
- X : Registre dindex
- Y : Registre dindex
- U : Pointeur de pile de lutilisateur
- S : Pointeur de pile du systme
PC : Compteur de programme

-6-

Cours du MC 6809/Pr. A. SERTI

Accumulateurs :
- A : Accumulateur de 8 bits
- B : Accumulateur de 8 bits
- D : Accumulateur de 16 bits (AB)
Registre de page direct DPR
Registre de condition CCR (drapeaux)
Les registres dindex X et Y :
Les registres dindex sont employs avec le mode dadressage index. Ils servent gnralement
au traitement dun bloc mmoire et pour pointer des donnes en mmoire. On peut, par
exemple, effacer un bloc mmoire ou dplacer le contenu dune rgion mmoire. Le 6809
possde deux registres dindex de 16 bits nomms X et Y.
Les pointeurs de piles U et S :
Ce sont des registres de 16 bits qui servent pointer ladresse des donnes temporaires dans
une rgion mmoire appele pile. Le 6809 possde deux pointeurs de piles, le registre S est le
pointeur de pile du systme tandis que le registre U est le pointeur de pile de lutilisateur. Le
pointeur de pile S est automatiquement utilis pendant les appels de sous programmes ou des
interruptions, alors que le pointeur de pile U est contrl exclusivement par le programmeur.
Le compteur de programme PC :
Ce registre de 16 bits agit comme un compteur binaire 16 bits avec une valeur de dpart
programmable. On lui spcifie la valeur de dpart par lintermdiaire dune commande.
Lutilisateur peut aussi, lintrieur de son programme, changer le contenu du PC par une
instruction de branchement. Le rle de ce registre est exclusivement de signaler au
microprocesseur quel endroit se situe la prochaine instruction excuter. Dans la recherche
de linstruction par le microprocesseur, le contenu du PC est mis sur le bus dadresses et au
mme moment, un signal de lecture est gnr permettant ainsi la donne dans la case
mmoire adresse, de se propager travers le bus de donnes vers le microprocesseur pour tre
traite. De faon automatique, le PC sincrmente de 1 aprs que le CPU ait reu la donne de
manire pointer la prochaine instruction.
Les accumulateurs :
Le MC6809 possde deux accumulateurs : laccumulateur A et laccumulateur B. Ce sont des
registres de 8 bits servant traiter des donnes. Toutes les oprations arithmtiques ou logiques
se font par lintermdiaire des accumulateurs et de lALU. Le MC6809 a la particularit de
combiner les deux accumulateurs A et B pour en former un seul de seize bits, appel
accumulateur D, permettant ainsi la ralisation doprations sur 16 bits. Lorsque les
accumulateurs A et B sont concatns pour obtenir laccumulateur D, les 8 bits les plus
significatifs proviennent de laccumulateur A tandis que les 8 bits les moins significatifs, de
laccumulateur B.
Le registre de page direct :
La mmoire adressable par le MC6809 est de 64 Koctets, qui pourra tre rpartie en 256 pages
de 256 octets chacune. Le registre DPR (8 bits) permet dindiquer quelle page parmi les 256
pages est accessible. Ce registre peut tre modifi avec une valeur dsire. Il est implicitement
utilis lorsque le microprocesseur excute une instruction dans le mode dadressage direct. Ce
registre est automatiquement remis zro lors dune ractivation matrielle RESET.
Le registre de code condition :
Ce registre (8 bits) permet de connatre les rsultats dune opration effectue par lALU. Le bit
Z, mis 1, indique que le rsultat donne zro, le bit N, mis 1, indique que le rsultat est un
nombre ngatif, etc. Les bits de ce registre sont mis jours aprs lexcution de certaines
-7-

Cours du MC 6809/Pr. A. SERTI

instructions. Le registre de condition est utilis pour prendre des dcisions et de raliser des
sauts conditionnels dans un programme.

7 6 5 4 3 2 1 0
E F H I N Z V C

D0 D7

A0 A15

Registre
dinstruction

16

/RESET
/NMI

PC

B
U
S
A
D
R
E
S
S
E
S

U
S
Y
X
D

A
B

DPR

/FIRQ

Contrle des
interruptions

B
U
S

/IRQ
/DMA
R//W

Contrle des
bus

D
O
N
N
E
E
S

/HALT
BA
BS
XTAL

Horloge

EXTAL
MRDY

CCR

E
Q

ALU

-8-

Cours du MC 6809/Pr. A. SERTI

Programmation en assembleur
I- Les langages de programmation :
Il existe plusieurs langages de programmation, toutefois, le langage machine est le seul compris par les
microprocesseurs. Ce langage est incontestablement le plus rapide excuter.
Le langage assembleur permet dutiliser des mnmoniques pour remplacer les codes machines
difficiles interprter.
Les langages volus bnficient de librairies de fonctions rendant la programmation plus simple
dvelopper
Exemple de
Programme de
Nom
programme
traduction en
Remarques
machine
En binaire :
10100101
- Le seul langage
01100000
compris par le CPU
01100101
Hexadecimal Loader - Le programme en
01100001
- accepte les codes langage machine est
10000101
hexadcimaux
appel programme
Langage machine
01100010
- les traduit en objet
En hexadcimal :
binaire
- Le programme
A5
- les places en ordre hexadecimal loader
60
dans la mmoire
fait
partie
dun
65
programme appel
61
MONITEUR.
85
62
- Le programme crit
Assembleur :
sous
forme
de
accepte
les mnmoniques
est
LDA $60
mnmoniques
appel programme
Langage assembleur
ADC $61
- les traduits en source
STA $62
binaire
- il contient les
les
places champs : tiquette,
gnralement dans mnmonique
un fichier
(instruction
avec
oprande)
et
commentaire.
II- Programmation dun microprocesseur :
Un programme est une suite logique dinstructions dont lobjectif est de produire un comportement
dsir de la machine. Tout les microprocesseurs comprennent un seul type de programme appel
programme machine quon peut nomm aussi programme binaire ou objet.
Voici un programme objet excutable par un MC6809 :
Code binaire
Fonction
Instruction
re
1000 0110
Opcode
1 instruction
0101 1010
Oprande
1011 0111
Opcode
2me instruction
0000 0001
Oprande
0000 0000
Oprande
0011 1111
Opcode
3me instruction
-9-

Cours du MC 6809/Pr. A. SERTI

Le terme opcode signifie operational code ou code dopration. Ce code reprsente un ordre donn au
microprocesseur. Lorsquune oprande est prsente, elle suit toujours lopcode et reprsente, soit une
valeur immdiate ou relle ou une adresse vers laquelle le microprocesseur doit communiquer. Il est
toutefois possible que loprande ne soit pas requise sil sagit dopration interne du microprocesseur
(mode inhrent).
La reprsentation du programme sous la forme binaire est difficile comprendre et cest pour cette
raison quelle nest pas utilise. Pour amliorer la situation, on peut utiliser la reprsentation
hexadcimale. Cela permet de diminuer les erreurs lors de lentre du programme en mmoire.
Le mme programme sous la forme hexadcimale :
Code
Fonction
Instruction
hexadcimal
86
Opcode
1re instruction
5A
Oprande
B7
Opcode
2me instruction
01
Oprande
00
Oprande
3F
Opcode
3me instruction
Le programme objet, mme transform en hexadcimal, nest pas trs commode car il est difficile,
pour un humain, dinterprter ce que fera celui-ci. Dans le but de faciliter la comprhension du
programme, il sera associ chaque instruction une mnmonique qui est une reprsentation de
linstruction sous forme dun mot court qui est habituellement descriptif et plus facile mmoriser.
Le mme programme en assembleur. Pour plus de clart, lopcode et loprande ont t runis sur la
mme ligne.
Code hexa.
Opcode
Oprande
Instruction
re
86 5A
LDA
#$5A
1 instruction
B7 01 00
STA
$0100
2me instruction
3F
SWI
3me instruction
III- Jeux dinstructions du 6809 :
La carte de codification prsente lensemble des instructions utilisables par le MC6809. Cette carte
contient :
- Toutes les instructions possibles pour le microprocesseur ranges par ordre pour
chaque mode dadressage, avec lopcode correspondant en hexadcimal (OC), le
nombre de cycle de linstruction (~) et son nombre doctets (#).
- Elle indique aussi si linstruction opre avec la mmoire ou avec un registre, dans ce
cas avec quel registre.
IV- Dure dexcution dun programme :
La dure dexcution dune instruction se calcule en tenant compte du nombre de cycles de
linstruction, multipli par la priode du cycle machine du microprocesseur. Dans le cas du MC6809,
la frquence dhorloge dterminant la dure du cycle machine est gale la frquence du crystal
divise par quatre.
Par exemple, si la frquence du crystal du MC6809 vaut 4 Mhz, alors la frquence dhorloge (E ou Q)
vaut 1Mhz. Donc la dure dun cycle machine est gale la priode de lhorloge et vaut : priode de E
= 1 / frquence de E = 1 s.
Pour une instruction durant 5 cycles, le temps dexcution est donc 5 fois le temps dun cycle machine,
c'est--dire 5 s. Le nombre de cycles de linstruction se trouve dans la colonne de la carte de
codification dont lentte commence par le signe ~.
- 10 -

Cours du MC 6809/Pr. A. SERTI

4.1 Boucle de dlai :


Code
Etiquette
machine
86 05
4A
Encore
26 FD
39

Opcode

Oprande

LDA
DECA
BNE
RTS

#$05
Encore

Nbre de
cycles
2
2
3
5

Cet exemple montre un sous programme permettant de crer un dlai dont la dure dpend de
la valeur place dans le registre A. On peut voir, par lanalyse du programme que seules les
instructions DECA et BNE vont se rpter 5 fois. Le calcul du nombre de cycles total pour le
programme est :
nombre de cycles = 2 + 5 * (2 + 3) + 5 = 32 cycles
Avec un crystal de 4 Mhz, un cycle vaut 1 s et la dure du sous programme est :
Dure = 32 * 1 s = 32 s
V- Les champs dans un programme en langage assembleur :
Voici un exemple en langage assembleur. Les champs tiquettes, mnmonique et commentaires sont
crs par le programmeur. Les champs adresse hexa et code machine sont gnrs par un programme
nomm assembleur.
Adresse
Code
Etiquette
Mnmonique
Commentaires
Hexa
machine
Opration Oprande
ORG
$0200
Adresse du prog
0200
A5
DONNEE
DB
$A5
Dclaration de la variable
DONNEE
0200
PORTB
EQU
$6002
Dclaration
de
la
constante PORTB
0201
B6 02 00
DEBUT
LDA
DONNEE Lire la donne et la
placer ds le registre A
0204
B7 60 02
STA
PORTB
Dposer A dans le
PORTB
0207
7E 02 01
JMP
DEBUT
Le programme boucle sur
lui mme
END
Directive fin de prog.
pour lassembleur
Adresse :
La progression des adresses dpend de la longueur en octets de linstruction.
Code machine :
Ce sont des codes sous forme hexadcimale correspondant linstruction. On les trouve sur la carte de
codification du MC6809.
Etiquette :
Ce sont des mots reprsentatifs qui servent de rfrences. Elles remplacent des adresses ou des
constantes.
Mnmonique :
Cest linstruction complte incluant lopration et loprande :
- Opration : Cest linstruction de base
- Oprande : Cest la donne de linstruction. Elle peut reprsenter une valeur, une
adresse ou un registre. Certaine instructions nutilisent pas doprandes.
- 11 -

Cours du MC 6809/Pr. A. SERTI

Commentaire :
Champ optionnel mais trs utile pour la comprhension du programme. Seules les lignes cls doivent
tre commentes.
VI- Rdaction dun programme :
La rdaction dun programme se divise en 6 tapes, toutes aussi importantes les une que les autres :
- Description de la tche
- Rdaction dun algorithme
- Rdaction dun ordinogramme
- Rdaction dun programme
- Dpannage
- Documentation
6.1 Description de la tche :
Il faut dcrire clairement, simplement mais sans omission, la tche que le programme doit tre
capable de raliser.
Pour le programmeur, une bonne description de la tche facilitera la rdaction de lalgorithme,
de lordinogramme et du programme.
Pour lutilisateur, une bonne description de la tche permettra de mieux exploiter le
programme, tout en restant conscient de ces limites.
6.2 Algorithme :
Lalgorithme est la description, tape par tape, des oprations effectuer sur un ensemble de
donnes pour arriver aux rsultats souhaits. Les diffrentes tapes doivent tre ordonnes
squentiellement.
6.3 Ordinogramme :
Un ordinogramme est une reprsentation graphique dun algorithme. Il prsente trois
avantages :
- Facilite le codage ou lcriture du programme
- Facilite la comprhension du programme
- Utile pour le dpannage du programme
Aprs le trac de lordinogramme, il faut en vrifier le cheminement logique par des
exemples thoriques avec quelques donnes numriques avant dcrire les instructions
en dtail.

- Dbut ou fin du programme ou du sous programme :


Dbut : contient le nom du programme ou du sous-programme
Fin : contient le mot Fin pour un prog et le mot Return pour un sous prog

- Traitement dinformation

- 12 -

Cours du MC 6809/Pr. A. SERTI

- Opration de test pour prendre une dcision. Sert faire un


branchement conditionnel

- Opration dentre/sortie comme lire afficher, crire,

- Renvoi. Utilis pour diminuer le nombre de flches

- Renvoi de page
- Sous-programme. Contient le nom du sous-programme

- Utilis pour crire les remarques explicatives ou commentaires

- Flche de direction du cheminement de linformation dans lordinogramme

6.4 Conseils pratiques pour la ralisation dordinogramme :


- Ne jamais croiser les flches.
- Utiliser les renvois pour rduire le nombre de flches.
- Donner lordinogramme une structure linaire du haut en bas.
- Utiliser des noms courts et reprsentatifs des variables quils symbolisent.
- Lordinogramme doit reprsenter une solution gnrale, indpendante du langage et
de lordinateur utilis.
- Vrifier la logique de lordinogramme en essayant quelques valeurs numriques avant
de rdiger un programme.
6.5 Exemple dordinogramme :
La figure suivante reprsente lordinogramme dun jeu de lumire nomm CHENILLARD. On
y trouve deux parties, une pour le programme principal, lautre pour le sous-programme
DELAI. La variable CODE est une valeur 8 bits et reprsente le code transmis sur les LED
tandis que la variable VALUE est une variable 16 bits qui dtermine la dure du dlai.

- 13 -

Cours du MC 6809/Pr. A. SERTI

CHENILLARD

DELAI

CODE $01
VALUE $xxxx
CODE LEDs
Dcrmenter VALUE
DELAI
VALUE
Dcalage
gauche de CODE

oui

0
non

oui

Retour

non
CODE0

VII- Programmation structure :


La technique de programmation structure ou modulaire consiste subdiviser le programme en
modules ou sous-programmes. Ainsi, le problme rsoudre, au dbut dapparence trs complexe, est
remplac par plusieurs petits problmes beaucoup plus simple solutionner sparment. Il est donc
recommand de rdiger les programmes en incluant les sections suivantes :
- identification et titre du programme
- description du programme
- section dinitialisation
- programme principal
- sous-programmes ou modules.
La section dinitialisation dcrit et initialise toutes les constantes et les variables utilises dans le
programme. Il ne faut jamais utiliser le mme symbole pour deux quantits diffrentes.
Le programme principal unit tous les sous-programmes et coordonne la suite dexcution de ceux-ci.
Chaque module ou sous-programme, appel aussi sous-routine, est un petit bloc de programme qui
ralise une partie bien spcifique de lensemble logique ncessaire la rsolution du problme.
Les avantages de la programmation structure sont :
- la lisibilit
- la facilit de comprhension
- la rapidit dans la ralisation
- la rapidit dpanner (mise au point)
- la facilit modifier.

- 14 -

Cours du MC 6809/Pr. A. SERTI

7.1 Conseils pratiques pour lcriture dun programme en assembleur :


Pour les programmes en langage assembleur, dbutez toujours les sous-routines en fournissant
les informations suivantes :
- une brve description de la sous-routine
- des registres contenant les paramtres dentre
- des registres contenant les paramtres de sortie
- des registres affects par la sous-routine.
Si les registres affects par la sous-routine sont dj utiliss par le programme qui appelle cette
sous-routine, il faudra, avant dappeler cette dernire, sauver le contenu de ces registres sur la
pile. Ainsi, lorsque lexcution de la sous-routine sera termine, le contenu de ces registres
pourra tre rcupr avant de reprendre lexcution du programme principal. Cette mthode
sapplique aussi avec les sous-routines du moniteur.
Sauvez votre programme au fur et mesure que votre travail avance. Si le systme a une
dfaillance, vous ne serez pas oblig de recommencer au complet.
7.2 Dpannage :
Pour dpanner vos programmes, utiliser des points darrts aux endroits stratgiques afin de
trouver lendroit o le programme cafouille. Ainsi, lordinateur se rendra rapidement jusquau
point darrt puis sarrtera et attendra que vous lui donniez la permission de continuer
lexcution du programme. Vous pourrez consulter les registres et les variables du programme
afin de dceler le problme (BUG) avant de continuer lexcution. On peut aussi excuter le
programme en mode pas pas et surveiller la progression des registres et les actions sur les
sorties.
7.3 Documentation :
Pour pouvoir utiliser, corriger ou amliorer un programme, il est essentiel de bien le
documenter. Deux types de renseignements doivent tre fournis :
- la documentation pour lusager
- la documentation technique.
La documentation pour lusager doit regrouper tous les renseignements ncessaires pour utiliser
le programme sans le comprendre fond.
La documentation technique sert lentretien et la mise jour du programme. Elle contient :
- la description de la tche
- lalgorithme
- lordinogramme
- une liste commente du programme
- toute information utile additionnelle.
VIII- Modes dadressage du 6809 :
Ds que lon commence programmer, il est extrmement important de comprendre les modes
dadressage si lon veut profiter de toute la puissance du 6809. Dans une instruction, le mode
dadressage spcifie lemplacement de loprande avec laquelle linstruction doit tre excute. Cet
emplacement sera appel adresse effective.

- 15 -

Cours du MC 6809/Pr. A. SERTI

8.1 Mode dadressage immdiat :


Dans ce mode dadressage, la donne utiliser est dans loprande. Ladressage immdiat est
identifi par le symbole #. Loprande peut tre de 8 bits ou de 16 bits, selon le registre utilis.
Voici quelques exemples dinstructions de ce mode :
LDA #$21
; place la valeur $21 dans laccumulateur A
LDX #6000 ; place la valeur $6000 dans le registre X
ORA #$80
; fait un OU logique entre le registre A et la valeur $80. Rsultat dans A
8.2 Mode dadressage tendu (extended) :
Le mode dadressage tendu utilise ladresse effective de la donne comme oprande plutt que
la donne elle-mme. Ce mode est utilis pour lire ou crire une donne dans la mmoire ou sur
une entre/sortie. Avec lassembleur, on peut forcer le mode dadressage tendu par lusage du
symbole > plac avant loprande, cela vite que lassembleur utilise le mode direct quand il
dtecte la possibilit de le faire. Voici quelques exemples dinstructions de ce mode :
LDA $6000 ; place la valeur contenue ladresse $6000 dans le registre A
ANDA $00FF ; fait un ET logique entre la valeur contenue ladresse $00FF et le
registre A et dpose le rsultat dans le registre A
STA PORTB ; dpose le contenu du registre A ladresse correspondante ltiquette
PORTB
8.3 Mode dadressage inhrent :
Ce mode dadressage se caractrise par le fait quil nutilise pas doprandes. Aucun appel
une case mmoire nest ncessaire pour effectuer la fonction demande. Le CPU sait que le
traitement seffectue directement sur le(s) registre(s). Voici quelques exemples dinstructions
de ce mode :
CLRA ; remise zro du registre A
LSLB ; fait un dcalage logique gauche du contenu du registre B
RTS ; excute le retour au programme principal aprs avoir terminer un sousprogramme (adresse de retour registre PC)
SWI ; interruption logicielle (appelle un programme dinterruption) souvent utilis
par les programmes moniteurs comme point darrt
8.4 Mode dadressage direct :
Le mode dadressage direct est trs similaire au mode tendu. Loprande reprsente aussi une
adresse, comme le mode tendu, sauf que seul loctet le moins significatif est dfini. Pour le
6809, une adresse est compose de deux octets, il en manque un et cest loctet reprsentant la
partie la plus significative de ladresse. Cet octet manquant est remplac par le registre de page
direct nomm DPR. Pour former ladresse effective, le CPU va combiner le registre DPR avec
loprande.
LDA $02
; si le registre DPR vaut $60, le registre A sera charg avec le contenu de
ladressage effective $6002
8.5 Mode dadressage indirect :
Ladressage indirect permet de recueillir ladresse effective dans le contenu de celle spcifie
par loprande, on travaille donc avec ladresse de ladresse de la donne. Les modes
dadressage tendu et index peuvent utiliser ladressage indirect. Voici quelques instructions
utilisant ladressage indirect :
LDA [$1000]
; les contenus des adresses $1000 et $1001 constituent ladresse
effective de la donne charger dans le registre A

- 16 -

Cours du MC 6809/Pr. A. SERTI

JSR [OUTCAR]

; appel du sous-programme, on forme ladresse effective du sousprogramme par lassemblage de loctet lu par le CPU ladresse
de OUTCAR constituant la partie msb de ladresse effective, et
loctet lu ladresse OUTCAR+1 constituant loctet lsb de
ladresse effective

STB [,Y]

; la valeur du registre B est dpose ladresse effective, celle-ci


est forme par le contenu de deux cases mmoires conscutives
pointes par le registre dindex Y, ladresse du pointeur on
trouve loctet msb de ladresse effective tandis qu ladresse
suivante on trouve loctet lsb de ladresse effective

8.6 Mode dadressage index :


Le mode index est utilis principalement pour la manipulation de tableaux ou de blocs
mmoire. Avec le MC6809, on peut utiliser comme registre dindex les registres X et Y. Notez
que la dimension de ces registres est de 16 bits.
Le mode dadressage index se sert dun pointeur (gnralement X et Y, possiblement U, S et
PC) qui contient ladresse effective de la donne traiter. Ce mode dadressage est surtout
efficace avec des tableaux constitus dun grand nombre de donnes traiter. Voici quelques
instructions utilisant le mode index :
STA, X
; dpose le contenu du registre A ladresse contenue dans X
LEAX 1,X
; incrmente le pointeur dindex X
LDB 5,Y
; le registre B est charg avec le contenu de ladresse effective qui est
gale la somme du registre Y et de loffset 5 (AE = Y + 5)
Les diffrents types du mode index :
Il existe diffrentes faons dutiliser le mode dadressage index comme indiqu sur le tableau
suivant :
TYPES
FORME ASSEMBLEUR
Constant offset from R (offset sign)
,R
n,R
Accumulator offset from R (offset sign) A,R B,R D,R
Auto increment/decrement from R
,R+ ,R++ ,-R
,--R
Constant offset from PC (offset sign)
n,PC
Extended indirect
[n]
R = registre X, Y, U ou S, n = offset
Le MC6809 utilise la post incrmentation et la pr dcrmentation avec le type Auto
increment/decrement from R du mode index. En dautres mots, si linstruction est LDA, X+,
le registre X sincrmente aprs le chargement de laccumulateur A, alors que pour linstruction
LDA, -X, le registre X se dcrmente avant le chargement de laccumulateur A.
Les modes indexs direct et indirect :
Dans le mode index direct, ladresse effective (ladresse o se trouve la donne traiter) est
simplement la valeur de lindex plus son offset (dplacement).
LDA 2,X
AE = X + offset
AE : Adresse effective ; (AE) : Contenu de ladresse effective
(AE) A
Dans le mode index indirect, ladresse effective est le contenu de ladresse pointe par lindex
plus son offset. Evidement, il est ncessaire dutiliser le contenu de deux adresses conscutives
pour former ladresse effective. On reconnat le mode index indirect par la prsence de
crochets.
LDA [2,X] MSB de lAE = (X + offset)
LSB de lAE = (X + offset + 1)
(AE) A
- 17 -

Cours du MC 6809/Pr. A. SERTI

IX- Pointeur de pile :


La pile est une zone de stockage situ dans la mmoire RAM servant mmoriser temporairement des
informations. La grance de la pile est ralise par un pointeur de pile, celui-ci ayant pour fonction de
pointer la prochaine case mmoire utilise par la pile durant lexcution dune instruction
dempilement. Dans le 6809, il existe deux pointeurs de pile :
U : pointeur de pile de lutilisateur
S : pointeur de pile du systme
9.1 Instructions manipulant les piles :
On peut utiliser une pile nimporte o en mmoire vive RAM par les instructions LDS, LDU,
TFR ou EXG. Par exemple, LDS #$0080 dfinit une pile systme ladresse $0080. Cette
adresse reoit le nom de haut de pile. Dans un systme de dveloppement, la pile S est toujours
initialise. Ds la mise sous tension, le microprocesseur est occup excuter le programme
moniteur, celui-ci ncessite une pile fonctionnelle parce quil appelle frquemment des sousprogrammes et doit faire usage de la pile pour mmoriser les adresses de retour des sousprogrammes.
La pile S est gre par un ensemble dinstructions du type :
- PSHS qui pousse les donnes dans la pile S (ex : PSHS A,X)
- PULS qui retire les donnes de la pile S (ex : PULS A,X)
- JSR ou BSR qui poussent la valeur du compteur de programme (PC) dans la pile S
pour sauvegarder ladresse de retour dun sous-programme.
- RTS qui retire ladresse de retour dun sous-programme de la pile S.
La pile U nest jamais utilise par le systme lors dun appel un sous-programme. Cette
fonction est rserve la pile S. A part cette diffrence, les deux pointeurs de pile fonctionnent
de la mme faon que les registres LIFO (last in first out). La donne pousse en dernier doit
tre retire en premier.
9.2 Ordre dempilement et de dpilement :
Les instructions PSHS et PULS permettent de sauver ou de rcuprer un ou plusieurs registres
dans la pile.
Exemple :
PSHS A,B,X,Y,U
; sauve les registres
PULS A,B,X,Y,U
; rcupre les registres
Voyons maintenant lordre dans lequel sont placs les registres dans la pile, lorsque le CPU
excute une instruction de type PSHS ou PULS.
Le pointeur de pile se dplace vers les adresses basses pour une instruction dempilement et
vers les adresses hautes pour une instruction de dpilement.
Le tableau suivant indique les ordres dempilement et de dpilement.
CONTENU ADRESSE CONTENU ADRESSE
PC LO
S-1
X LO
S-7
PC HI
S-2
X HI
S-8
S/U LO
S-3
DPR
S-9
S/U HI
S-4
B
S-10
Y LO
S-5
A
S-11
Y HI
S-6
CCR
S-12
9.3 Exemple de programme utilisant la pile :
Aussitt quun appel un sous-programme est effectu, la pile du systme est sollicite. Il faut
donc quelle soit dj initialise. Dans une application autonome, le programme doit lui-mme
initialiser le pointeur de pile avec une instruction comme LDS #$xxxx o xxxx est une adresse
de la RAM reprntant le haut de la pile.

- 18 -

Cours du MC 6809/Pr. A. SERTI

Gnralement, une centaine doctets sont ncessaires pour la dimension de la pile. Certains
programmes utilisent la pile pour y emmagasiner temporairement une quantit importante
dinformations, le programmeur doit prvoir une zone mmoire plus grande.
Lexemple suivant montre linitialisation du pointeur de pile dans un programme autonome.
****************************
* Programme dinitialisation et
* dutilisation de la pile S
****************************
ORG $E000
tabli ladresse du programme
LED
EQU $2000
adresse du dispositif de sortie
DEBUT
LDS #0100
initialise le pointeur de pile
ENCORE
LDA #01
valeur de dpart
GAUCHE
STA LED
criture port de sortie
BSR DELAI
appel du sous-programme DELAI
LSLA
dcalage gauche du contenu de A
BNE GAUCHE
test si rotation termine
BRA ENCORE
recommence
*****************************
* Sous-programme DELAI
*****************************
DELAI
PSHS X
sauve le registre X
LDX #$30D4
tabli la dure du DELAI
REPETE
LEAX -1,X
dcrmente le compteur X
BNE REPETE
test si rendu zro
PULS X
on rcupre la valeur de X
RTS
9.4 Observation sur le fonctionnement de la pile :
Dans le programme prcdent, le pointeur de pile du systme est initialis par la valeur $0100.
Lorsque le microprocesseur quitte le programme principal pour aller excuter le sousprogramme DELAI, le registre PC est automatiquement sauv pour conserver ladresse de
retour.
La valeur de ladresse de retour, que le microprocesseur doit sauvegarder lorsquil va excuter
le sous-programme DELAI, est ladresse de linstruction qui suit lappel du sous-programme.
Dans ce cas, cette adresse correspond $E00B.
Selon lordre dempilement tablit par le fabricant, loctet le moins significatif de ladresse de
retour du sous-programme a t sauv dans la pile ladresse $00FF et loctet le plus
significatif ladresse $00FE.
La valeur du pointeur de pile au moment o le microprocesseur commence la lecture de la
premire instruction du sous-programme est $00FE. Seul le registre PC a t sauvegard
jusqu maintenant.
La valeur du pointeur de pile, au moment o le microprocesseur commence la lecture de la
deuxime instruction du sous-programme, est $00FC. Le registre X est ajout dans la pile par
linstruction PSHS X, et le pointeur de pile S est automatiquement ajust.
La valeur du pointeur de pile, aprs que le microprocesseur ait excut linstruction RTS du
sous-programme, est $0100. Le pointeur est donc revenu sa position initiale puisque tous les
registres sauvegards dans la pile ont t retirs.
Le programme plante si on oublie de placer linstruction PULS X avant linstruction RTS. Au
moment o lon croit reprendre la valeur du PC, le pointeur de pile pointe la valeur
sauvegarde pour le registre X et cest cette valeur qui sera retourne au PC.

- 19 -

Cours du MC 6809/Pr. A. SERTI

Durant lexcution de ce programme, la valeur la plus basse du pointeur de pile a t $00FC.


Quatre octets ont t sauv dans la pile, le pointeur de pile a donc descendu de quatre adresses
($0100 - $0004 = $00FC).

- 20 -

Cours du MC 6809/Pr. A. SERTI

Programmation des entres/sorties


I- Description gnrale du PIA :
Le PIA (Peripheral Interface Adaptor) est un circuit lectronique sophistiqu qui contrle des
priphriques relis en parallle. Tous les micro-ordinateurs travaillent avec des circuits
dentres/sorties pour assurer la liaison avec le monde extrieur. Le PIA est incorpor dans bon
nombre dapplications commandes par divers types de microprocesseurs. Ce circuit dentre/sortie
peut recevoir des contacts simples ou disposs en matrice, contrler des lecteurs de LED, des relais ou
des opto-coupleurs, etc. Le PIA est incontestablement trs populaire comme interface.
Le PIA communique avec les priphriques via 16 lignes dentre/sortie. Ces lignes PA0 PA7 et PB0
PB7 sont configures en 2 ports PA et PB de 8 bits (8 lignes). Un port constitue un groupe
dentres/sorties parallles. Chaque ligne est programme sparment en entre ou en sortie. Le
programmeur peut contrler chaque ligne individuellement. Quand le programmeur lit le port PA
programm en entre, ltat des 8 lignes PA0 PA7 est achemin travers le PIA puis sur les lignes D0
D7 du bus de donnes vers le microprocesseur. Quand le programmeur crit dans le port B,
programm en sortie, linformation est envoye par le microprocesseur via le bus de donnes (ligne D0
D7) puis travers le PIA jusquaux lignes PB0 PB7 du port B.
Les diffrences entre le port A et le port B se situent au niveau des possibilits dchange avec
protocole entre le PIA et les priphriques. Le port A est mieux adapt aux entres tandis que le port B
convient mieux aux sorties. Chaque port est dot de 2 lignes de contrle, lune en entre (CA1 ou
CB1) et lautre en entre ou en sortie (CA2 ou CB2).
II- Brochage du PIA :
La figure suivante montre le brochage du PIA.

VSS
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
CB1
CB2
VCC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

M
C
6
8
2
1

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

- 21 -

CA1
CA2
/IRQA
/IRQB
RS0
RS1
/RESET
D0
D1
D2
D3
D4
D5
D6
D7
E
CS1
/CS2
CS0
R//W

Cours du MC 6809/Pr. A. SERTI

Voici un rsum des signaux et du brochage du PIA. Dun point de vue fonctionnel, les signaux
appartiennent 4 catgories.
Signaux rservs aux donnes des
priphriques
Signaux rservs aux donnes
microprocesseur
Signaux de contrle et de
synchronisation
avec
les
priphriques
Signaux de contrle et de
synchronisation
avec
le
microprocesseur

PA0 PA7
PB0 PB7
D0 D7
CA1, CA2
CB1, CB2
E, R//W, /RESET, CS0, CS1,
/CS2, RS0, RS1, /IRQA, /IRQB

2.1 Signaux rservs aux donnes des priphriques :


PA0 - PA7
Port A lignes dentre ou de sortie (logique 3 tats)
PB0 PB7 Port B lignes dentre ou de sortie (logique 3 tats)
Ces lignes ne supportent pas de transferts bidirectionnels de donnes. Chaque ligne peut fournir
en sortie 1 mA 1,5 V et conduire la base dun transistor. En entre, chaque ligne est ltat 0,
si la tension applique est de 0,8 V et moins et ltat 1, si la tension applique est de 2 V et
plus. Une ligne du port B (assign en sortie) entre en tat de haute impdance lors dune
lecture.
2.2 Signaux rservs aux donnes du microprocesseur :
D0 D7
Lignes du bus de donnes assurant le transfert bidirectionnel dinformations
entre le microprocesseur et le PIA. Ces lignes fonctionnent en logique 3 tats.
2.3 Signaux de contrle et de synchronisation avec les priphriques :
CA1 Ligne, en entre seulement, utilise pour signaler une cause dinterruption dun
priphrique.
CA2 Lorsque CA2 est programme en entre. Cette ligne fonctionne comme CA1. Lorsque
CA2 est programme en sortie, elle est utilise comme signal de rponse sur les donnes
reues au port A.
CB1 Ligne, en entre seulement, utilise pour signaler une cause dinterruption dun
priphrique.
CB2 Lorsque CB2 est programme en entre, cette ligne fonctionne comme CB1. En sortie,
elle vhicule un signal associ lenvoi de donnes sur le port B.
2.4 Signaux de contrle et de synchronisation avec le MPU :
E
Signal de synchronisation dhorloge avec le MPU
R//W
si R//W = 1, le MPU lit dans le PIA les donnes provenant des priphriques o
il lit les registres DDRA, DDRB, CRA ou CRB.
Si R//W = 0, le MPU crit des donnes dans le PIA pour les envoyer aux
priphriques o il programme les registres DDRA, DDRB, CRA ou CRB.
/IRQX
(X=A ou B) Lorsque ces deux signaux passent ltat logique 0, ils signalent
une demande dinterruption provenant du PIA. Les broches /IRQA et /IRQB
sont gnralement connectes aux lignes dinterruptions du MPU.
/RESET
Signal qui remet 0 les registres internes du PIA. Lors dun RESET, les ports A
et B sont en entres.
CS0CS1/CS2 Le botier du PIA sera choisi si CS0 = 1, CS1 = 1 et /CS2 = 0.
RS0 et RS1 Ces 2 lignes donnent accs aux 6 registres internes du PIA, 4 registres sont
accessibles directement et les 2 autres le sont de faon indirecte.
- 22 -

Cours du MC 6809/Pr. A. SERTI

III- Branchement du PIA avec le MC6809 :

CPU
6809

R//W
/RESET
A0
A1
FIRQ
D0

R//W
/RESET
RS0
RS1
IRQA
IRQB
D0

D7

D7
+5v

CS0
CS1
/CS2

CA1

Priphrique
A

PA
CA2

PIA
6821

CB1

Priphrique
B

PB

CB2

Dcodeur dadresses

La figure de branchement du PIA montre comment le PIA est implant dans le systme (micro kit). Le
dcodeur dadresse fournit un signal de slection rpondant ladresse de base $8000.
IV- Les registres du PIA :
Physiquement, le PIA utilise quatre adresses pour la slection des registres. Deux registres (PA et
DDRA) rpondent la mme adresse. Laccs lun ou lautre se fait par le bit 2 du registre de
contrle CRA. Le mme raisonnement est utilis pour le port B.
RS1
RS0
Registre slectionn
0
0
PA si CRA2=1 ou DDRA si CRA2=0
0
1
Registre de contrle CRA
1
0
PB si CRB2=1 ou DDRB si CRB2=0
1
1
Registre de contrle CRB
Du point de vue programmation, lutilisateur a accs 6 registres internes. Par consquent, le
microprocesseur peut rejoindre 6 registres en lecture et en criture comme des cases mmoire. Ces
registres sont diviss en deux groupes A et B de trois registres chacun.
- CRA et CRB : sont les registres qui contrlent les paramtres de fonctionnement du
PIA.
- DDRA et DDRB : sont les registres de direction dont chacun des bits fixe le sens de
transfert (entre ou sortie) pour chacune des lignes relies aux priphriques. Un tat
1 dfinit une ligne en sortie et un tat 0 dfinit une ligne en entre.
- ORA et ORB : sont les registres de sorties qui mmorisent les donnes (en sortie)
lors dune criture.
Chaque ligne dun port peut tre programme individuellement en entre ou en sortie, par lcriture
dun mot dans un registre de direction. Les registres de direction rglent la direction du transfert de
donnes entre les priphriques et le microprocesseur. Ainsi lorsquun 0 est crit dans le bit DDRA6
du registre DDRA, la ligne PA6 est programme en entre. A linverse, lorsquun 1 est crit dans le bit
DDRB6 du registre DDRB, la ligne PB6 est programme en sortie.
Les bits des lignes programmes en sortie sont mmoriss dans un registre. Par exemple, le signal
envoy au priphrique via la ligne de sortie PB6 est mmoris dans le bit ORB6 du registre de sortie
ORB. Ensuite, puisque le bit DDRB6=1 dans le registre de direction DDRB, le transfert du bit ORB6
sur la ligne PB6 est autoris.
Ltat dune ligne programme en entre nest pas mmoris dans un registre de sortie. Ainsi ltat de
la ligne PA6 est transmis directement au buffer qui lamplifie puis lenvoie sur la ligne D6 du bus de
donnes vers le microprocesseur.
- 23 -

Cours du MC 6809/Pr. A. SERTI

V- La programmation du PIA :
Avant dutiliser le PIA pour communiquer avec des priphriques, lutilisateur doit dfinir le sens (en
entre ou en sortie) de chacune des lignes du port A et du port B. Ensuite, il sagit de rejoindre les
registres priphriques ORA et ORB. Ces tapes constituent linitialisation du PIA. Elles se rsument
par lalgorithme suivant :
- Mettre 0 les bits, CRA2 et CRB2 des registres de contrle pour prparer laccs
aux registres de direction DDRA et DDRB.
- Ecrire dans les registres de direction DDRA et DDRB un code de 8 bits
programmant en entre ou en sortie chacune des lignes des ports. Un bit mis 1
assigne une ligne en sortie, tandis quun bit mis 0 programme une ligne en entre.
- Mettre 1 les bits CRA2 et CRB2 des registres de contrle pour prparer laccs
aux registres priphriques ORA et ORB.
Avant dutiliser un PIA, il faut absolument excuter un sous-programme dinitialisation qui
programme les registres internes suivant la configuration des entres/sorties dsire. Aprs son
initialisation, le PIA est prt rgir lchange de donnes entre le microprocesseur et les priphriques.
A cette tape, les donnes sont lues et crites dans les ports A et B 2 adresses correspondant aux
registres priphriques ORA et ORB.
VI- Tableau rsum des fonctions du registre CRA du PIA :
Ce tableau montre la fonction de chaque bit du registre de contrle CRA associ au port A du PIA, le
mme tableau est utilis pour le port B. Par exemple, si le PIA est utilis en mode simple, c'est--dire
sans utiliser les lignes de contrles, seul le bit 2 du CRA dtermine laccs DDRA ou PA.
7
6
5
4
3
2
1
0
IRQ de
IRQ de
Accs
CA1
CA2
Contrle de CA2
DDRA ou PA
Contrle de CA1
0
0
0
0
aucune
aucune
0
CA2 actif
0
0
CA1
0 interruption
transition
transition
CA2
sur

interruption
DDRA
actif
sur

masque
active sur
active sur
en
masque
CA1
CA2
entre
1
1
1
1
1
transition
transition
CA2 actif interruption
1
CA1
1 interruption
active sur
active sur
sur
permise
PA
actif sur
permise
CA1
CA2
CRA5=1 : CA2 est programme en sortie
- CRA4 CRA3 = 0 0 Mode dialogue (Hand Shake)

Enable

R//W
CA2

CA1

- 24 -

Cours du MC 6809/Pr. A. SERTI

Aux front actif de CA1 (FM ou FD) la ligne de contrle CA2 transite ltat haut
Pendant la lecture du port A (R//W=1) CA2 passe ltat bas.
Remarque :
Cest dans le mode dialogue que le mode de fonctionnement des ports A et B diffre.
CRB5=1 : CB2 est programme en sortie
- CRB4 CRB3 = 0 0 Mode dialogue

Enable
R//W

CB2

CB1

Aux front actif de CB1 (FM ou FD) la ligne CB2 passe ltat haut
Pendant lcriture sur le port B (R//W=0) CB2 passe ltat bas.
- CRB4 CRB3 = 0 1 Mode impulsion (Pulse Strobe)

Enable

R//W

CA2

Pendant la phase de lecture du port A, CA2 transite chaque front descendant de lhorloge
Enable (E).
De mme pendant la phase dcriture du port B, CB2 bascule chaque front montant de E.
- CRA4 CRA3 = 1 x Mode programme (ou mode Set/Reset)
Dans ce mode ltat de CA2 (resp. CB2) est impos par le bit programm au bit CRA3 (resp.
CRB3).

- 25 -