Vous êtes sur la page 1sur 43

Académie Royale Militaire

Système à microprocesseur
P 6809

Présenté par Pr. Adil SAADI


Académie Royale
Militaire
Microprocesseur
Un microprocesseur est un circuit intégré complexe caractérisé par une très
grande intégration et doté des facultés fonctionnelles d’interprétation et
d’exécution des instructions d’un programme.
Comme dans tout circuit intégré la technologie de fabrication impose au
microprocesseur des caractéristiques tels que :
 le temps de réponse qui se traduit par une plus ou moins grande vitesse
d’exécution des instructions du programme.
 la consommation

Exemple : le microprocesseur 6809 est fabriqué en technologie MOS canal N. Son


fonctionnement est synchronisé par une horloge dont la fréquence peut être 1, ou
1.5 ou 2 Mhz. Sa consommation type est de 0.5 W.
Académie Royale
Militaire Environnement minimal pour un microprocesseur
Le microprocesseur ne peut fonctionner sans un environnement minimal comportant:
 Une zone de mémoire vive pour les données et les résultats
 Une zone de mémoire morte pour le programme
 Une ou plusieurs interfaces pour les périphériques
Académie Royale
Militaire Environnement minimal pour un microprocesseur
Entre ces différents ensembles les liaisons fonctionnelles sont assurées par trois
groupes de conducteurs en parallèle, ou bus ayant chacun une fonction spécifique :
 Un bus des données : (Data bus), bidirectionnel qui assure le transfert des
informations entre le microprocesseur et son environnement, et inversement ; son
nombre de lignes est égal à la capacité de traitement du microprocesseur ; et il
peut piloter 8 charges TTL.

Un bus des adresses : (Adress bus), unidirectionnel qui permet la sélection des
informations à traiter dans un espace mémoire qui peut avoir 2 n emplacements, avec
n = nombre de conducteurs du bus d’adresses.
Un bus de commande : (Control bus), constitué par quelques conducteurs qui
assurent la synchronisation des flux d’informations sur les bus des données et des
adresses.
Exemple : pour l’environnement du 6809 :
Le bus des données communique avec le microprocesseur par l’intermédiaire de huit
broches bidirectionnelles (D0 à D7), d’où la possibilité de traiter des mots de huit
bits
 Le bus des adresses avec sa liaison établie par seize broches unidirectionnelles
(AO à A15) permet de gérer 216 emplacements mémoires soit 65 536 (= 64 kilo-
octets = 64 * 1 024 car 1 Ko = 2 10 octets)
 Le bus de commande communique avec dix bornes (12 pour le microprocesseur
6809E dont l’horloge est externe)
Académie Royale
Militaire
Microprocesseur
I- INTRODUCTION
Le microprocesseur 6809 est un processeur 8 bits de la famille
MOTOROLA qui peut adresser 64 K octets par l'intermédiaire de
son bus d'adresse de 16 lignes (A0-----------------------A15). C'est le seul
processeur 8 bits qui travaille en multitâche.
Dans la famille 6809, il existe deux types :
•6809 : Fonctionne avec une horloge interne.
•6809E: Fonctionne avec une horloge externe.

Oscillateur à quartz

Architecture d’un 6809


Académie Royale
Militaire
Schéma fonctionnel du microprocesseur 6809
On peut faire une petite simulation

Horloge
externe

interruptions Zone de mémoire utilisation


Académie Royale
Militaire
organisation interne du microprocesseur 6809
a) Unité Arithmétique et logique (ALU) :
L'ALU accomplit les opérations :
_ Arithmétiques : Addition, soustraction, multiplication, ....etc.
_ Logique : Et, ou, ou exclusif, complément à1, complément à2, ...
_ Décalage et rotation.
L'entrée de L'UAL est connectée au bus interne via
-) des registres "temporaires"
-) un registre particulier appelé "accumulateur". La sortie de l'UAL est connectée
uniquement à l'entrée de l'accumulateur.

b) Accumulateurs A, B et D :
Les calculs arithmétiques et les manipulations des données se font grâce aux
accumulateurs A et B de 8 bits.

Certains microprocesseur, possèdent des


accumulateurs de longueur double tel D
chez Motorola et HL chez Intel - dissociés
en deux et généralement baptisés
individuellement A et B ou H et L
respectivement.
Écriture hexadécimale

Exemple :
LDA # $1A $1A est de 8 bits (A est un registre 8 bits).
LDD # $13F4 $13F4 est de 16 bits (D est un registre 16 bits).
Chargement immédiat
Instruction de
chargement

A 0 0 0 1 1 0 1 0

0 0 0 1 0 0 1 1 1 1 1 1 0 1 0 0

D= A B

Cette adressage est appelé adressage immédiat


Adressage étendu
Soit une zone mémoire adressée par &2221 jusqu’à &2224 :

Pour charger la valeur contenue dans $2222 dans l’accumulateur A:

LDA $2222

Cette instruction est équivalente à charger le registre A avec le contenu


de l'adresse mémoire $2222 : ($2222) A (A =1Ø).

Remarque : la taille de A est 8 bits et celle de l’adresse est de 8 bits

Exemple : LDX $2222


Le registre X est de 16bits, donc il sera chargé par deux cases mémoires:
Charger le registre X avec le contenu des adresses mémoires $2222 et $2223 :
($2222 ; $2223)X (X = 1ØFF).
Une zone mémoire peut être adressée par le poids faible et le pois fort
séparément, cette technique peut être réalisée en moyennant un registre appelé
registre de page DP :

Exemple: le contenu de l’adresse &1050 peut être transféré vers l’accumulateur A


par :
LDA $5Ø Si DP = $1Ø; Charger le registre A avec le
contenu de l'adresse mémoire $1Ø5Ø : ($1Ø5Ø) A (A =$3Ø).

LDX $5Ø Si DP = $1Ø; Charger le registre X avec le


contenu de des adresses mémoires $1Ø50 et $1Ø51 :
($1Ø50 ; $1Ø51) X (X = $3Ø4F).

Ce type d’adressage est appelé adressage direct


Adressage étendu indirect

Exemple :
LDA#$BF
STA$01EC
LDA#$01
STA $0000
LDA#$EC
STA$0001
LDA [$0000]
END
Adressage indexé

Adressage indexé auto-incrémenté

LDA, X+
END

LDA, -X
END

LDD, X++
END
Adressage indexé avec déplacement
 Déplacement Constant : LDA#$BF
STA$0004
CLRA
LDA $04, X
END

 Déplacement Variable (Accumulateur): LDY#$0100


LDA#$CF
STA$01BA
LDA#$BA
STA$0100
LDA A, Y
 Déplacement Variable (Pointeur): END

LDA#$02
STA$000C
LDA#$33
STA$000D
……
LDS#$000B
LDB[$01,S]
END
Jeu d’instruction du 6809

Instructions

Programme
LDB#$05
LDX#$0034
ABX
END
AAX! Non
Jeu d’instruction du 6809

LDA#$01 % Changement du CC
TFR A,CC LDA#$01
LDA#$05 TFR A,CC
ADCA#$05 LDA#$FF
END ADCA#$00
END
Jeu d’instruction du 6809

Un octet:

Deux octets:

LDA#$0A
STA$0000
LDA#$05
STA$0001
LDA#$03
LDB#$54
ADDD$0000
END
Jeu d’instruction du 6809

A, B : Registre

LDA#$0A LDA#$0A
STA$0000 STA$0000
LDA#$A0 LDB#$FF
ANDA$0000 ANDB$0000
END END
Jeu d’instruction du 6809

LDA#$FF
STA$00A0
ASL$00A0
END

LDA#$F1
LDA#$F1 ASRA
ASRA ASRA
END END
Jeu d’instruction du 6809: Branchement
ET1:
LDA#$FF
STA$00A0
ASL$00A0
BCC ET1
END
LDA#$FF
STA$0000
ET1:
ASL$0000
BCS ET1
END
LDA#$FF
STA$0000
ET1:
ASL$0000
LDA#$FF BEQ ET1
STA$0000 END
ET1:
ASL$0000
BNE ET1
END
Jeu d’instruction du 6809: Branchement
LDA#$F0
ET1:
ASRA
BRA ET1
END
% Compteur de programme
LDA#$F0
STA$0000
ET2:
ASRA
BSR ET1
END
ET1:
ASLA
BSR ET2
END
Jeu d’instruction du 6809

LDX#$AFDC
CMPX#$AFDA
END
CMPS#$AFDA
END

Complément à un d’une mémoire, accumulateur A et B LDA#$F0


STA$0000
INC COMA
END
Soustrait 1 à l’accumulateur A ou B , une adresse mémoire DEC$0001
END
LDA#$80
LDX#$AFDC
DECA
Jeu d’instruction du 6809
LDX#$AFDC
EXG X,Y
Les registres X, Y, S, U et D: deux octets. END
Les registres A,B,CC et DP : Un octet. LDA#$80
LDX#$AFDC
EXG B,CC
END
LDA#$F0
STA$0000
JMP $FC00
BITA ou BITB END

LDA#$0F
ET1:
BITA#$10
BNE ET1
LDA#$0F END
Résultat : On affecte pas l’accumulateur, c’est ET1:
une opération de test. BITA#$01
BNE ET1
Affecte le flag Z, si le résultat est zéro, Z=1 END
Académie Royale
Militaire
Programmation du microprocesseur 6809
Programme 1 : on désire chercher dans une zone mémoire de taille 5 K débutant à
l’adresse $OO1O, s’il y a une valeur nulle, fin du programme.
Instruction test Instruction de Introduction de Recherche d’une PROGRAMME
valeur nulle boucle variable adresse valeur nulle COMPLET

LDA $0010 ETQ1: LDX#$0010 LDX#$0010 LDA#$12


TSTA LDA $0010 ETQ1: ETQ1: STA $0010
END TSTA LDA,X+ LDA,X+ LDA#$42
BEQ ETQ1 TSTA TSTA STA $0011
END BEQ ETQ1 BNE ETQ1 LDA#$AF
END END STA $0012
LDA#$00
STA $0013
LDA#$1C
STA $0014
LDX#$0010
ETQ1:
LDA,X+
TSTA
BNE ETQ1
END
Académie Royale
Militaire
Programmation du microprocesseur 6809
Programme 2 : on désire chercher dans une zone mémoire de taille 5 Koctets
débutant à l’adresse $OO1O, la fin de la ligne d’un texte, qui se termine par un
retour chariot , fin du programme.
Instruction Instruction de Introduction de PROGRAMME CR EQU $0D
retour chariot comparaison variable adresse COMPLET LDA#$12
CR EQU $0D STA $0010
CR EQU $0D CR EQU $0D LDA#$42
LDA#CR LDX#$0010
LDA#CR STA $0011
CMPA #CR ET1:
END LDA#$AF
END LDA,X+
CMPA #CR STA $0012
BNE ET1 LDA#$0D
END STA $0013
LDA#$1C
STA $0014
LDX#$0010
ET1:
LDA,X+
LDY#$00C0 CMPA #CR
LDB #$12 BNE ET1
STB,--Y END
end
Académie Royale
Militaire
Registres pointeurs du microprocesseur 6809
2) Registres de piles S et U

Les pointeurs de pile U et S (système) sont utilisés par le µp pour gérer la


sauvegarde de ses registres internes pendant l'exécution des programmes
d'interruptions ou de sous-programmes.

1) Saut de programme
LDA#$07
STA $0000 2) Registres PCL, PCH,UL, UH, YL, YH, XL,
LDS#$0040 XH ,DP, B, A , CCR.
BSR CALCUL
end
CALCUL:
LDA#$13
ADDA $0000
STA $0000
RTS
Académie Royale
Militaire
Registres pointeurs du microprocesseur 6809
Exercice 
Enoncé : Une table de données consiste en une liste de données quelconques logées
en mémoire à des adresses successives. L'adresse de la première donnée est
qualifiée d'adresse de base de la table.
Proposer un programme permettant de ranger en mémoire dans l'ordre croissant
l’ensemble des données 8 bits signées à partir de l'adresse de base $0200.

Il faudra en premier lieu charger la mémoire avec les nombres négatifs en


décrémentant de $FF à $80, puis charger les nombres positifs en incrémentant de
$00 à$7F.
Problème  :
On dispose d’une zone mémoire de 60 octets placée à partir de $1000, on veut réaliser l’opération
suivante :
On prend une adresse, par exemple l’adresse $1000, dont le contenu est :

[$1000]= . . . . . . . .

Quartet poids fort Quartet poids faible

On inter-change les quartets c.à.d. le nouveau contenu devient et sera stocké dans :

[$10A0]= . . . . . . . .

Quartet poids faible Quartet poids fort

Application Numérique :
[$1000] = 1110 0001
Le nouveau contenu devient :
[$10A0]= 0001 1110

Question : Faire le programme permettant de réaliser cette opération.


Correction

LDX#$0100 LDA#$04
LDA#$3C STA$0003
STA$0004 ET2:
ET0: LSL$0002
LDA#$F8 LSR$0001
STA ,X+ DEC$0003
DEC$0004 BNE ET2
BNE ET0 LDA$0001
LDB#$3C ADDA$0002
LDX#$0100 STA $A0,X
ET1: DECB
LDA ,X+ BNE ET1
STA $0000 END
ANDA#$F0
STA$0001
LDA$0000
ANDA#$0F
STA$0002
LDA#$A3
LDB#$24
MUL
END

ORG $FCA0
LDS#$000D
LDA#$A3
LDB#$24
JMP $FCAB
END
MUL
RTS
ORG $FCA0
LDS#$000D
LDA#$A3
LDB#$24
RORA
ROLB
END
Académie Royale
Militaire
Interruptions du microprocesseur 6809
Le microprocesseur 6809 possède quatre lignes d’interruptions matériels
(Hardware):
 Reset
 NMI (No masquable Interrupt).
 FIRQ (Fast Interrupt Request).
 IRQ ( Interrupt Request).
Hormis les demandes d’interruptions matérielles, il existe des interruptions
logicielles, ce sont des demandes insérées dans le programme. Le UP en possède
trois:
 SWI (Software Interrupt priotaire à FIRQ et IRQ).
 SWI 2 (Software Interrupt 2).
 SWI 3 ( Software Interrupt 3).
Vecteurs d’interruptions : FFFF/FFFE RESET
Lors d’une interruption matérielle FFFD/FFFC NMI
ou logicielle, le PC contient
FFFB/FFFA SWI
l’adresse du programme à
executer: FFF9/FFF8 IRQ
 Poids fort du PC dans la plus FFF7/FFF6 FIRQ
petite adresse.
FFF5/FFF4 SWI2
 Le poids faible dans la plus
grande adresse. FFF3/FFF2 SWI3
Académie Royale
Militaire
Interruptions du microprocesseur 6809
Instruction de retour d’interruption RTI:
Toutes les séquences de traitement d’interruption doivent se terminer par
l’instruction RTI (Return from Interrupt) pour éviter toute mauvaise manipulation
de pile
Interface Périphérique
PIA 6821
Académie Royale
Militaire
Interface Périphérique PIA 6821
L’interface parallèle de type PIA 6821 (Peripherical Interface Adapter) fournit un
moyen d’interface des appareils périphériques avec un microprocesseur 680X. Ce
circuit interface le MPU avec les périphériques par deux bus de données 8 bits
bidirectionnels et quatre lignes de contrôle. La configuration fonctionnelle du PIA
est programmée habituellement par le MPU pendant l’initialisation du système.
Chacune des lignes de données vers la périphérie (Port A et B) peut être
programmée pour être utilisée soit en entrée, soit en sortie à partir des registres
internes et du bus de données.

6821 : Port A : La charge maximale d'une entrée représente 1,5 charge TTL
standard. Les broches du Port A peuvent être lues par le µp6809 à la seule
condition de respecter les niveaux de tensions.
 U > 2 volts pour un 1 logique
 U < 0,8 volts pour un 0 logique

6821 : Port B : Broches en logique trois états ce qui permet de les mettre en
haute impédance lorsque le PIA n'est pas sélectionné. Les sorties du port B
(PB0 à PB7) sont compatibles TTL et peuvent fournir jusqu'à 1 mA sous 1,5
volts
Académie Royale
Militaire
PIA 6821: Organisation interne
Académie Royale
Militaire
Adressage du PIA 6821
Chip select Boitier
Sélection ‘Hard’ des
Registres

Registres ont même adresses


Adresses pour accéder aux registres
Académie Royale
Militaire
Registres du PIA 6821: Direction

Registres de direction de données DDRA et DDRB (Data Direction Register


A et B) Ils définissent (bit à bit) le sens de travail de chacune des broches des
ports A et B. Accessible en lecture comme en écriture. Px0 à Px7 des ports A
et B
= 0 la broche est une ENTREE
= 1 la broche est en SORTIE

Exemple 1 : définir le sens de travail de chacune des broches PA0 à PA7 et PB0
à PB7 = $00 toutes les 8 broches sont en Entrée = $FF toutes les 8 broches
sont en Sortie

Exemple 2: pour mettre la ligne PB4 en entrée et toutes les autres en sortie, il
faut écrire la valeur $10 dans le registre DDRB.
Registres du PIA 6821: Sortie
Registres de sortie ORA – ORB :
Ce sont les registres dans lesquels vont transiter les données. Pour lire une donnée
reçue par un port, il suffira de lire le contenu de ce registre.

Ils mémorisent les informations envoyées à l'extérieur sur les ports A et B.

En sortie : Si une des broches PA0 à PA7 ou PB0 à PB7 est en sortie, ce sera le
contenu du bit correspondant au registre ORA ou ORB qui influencera cette broche.
Dans ce cas le µp6809 devra écrire dans le registre ORx. Si on écrit une donnée
dans le registre ORx, celle-ci se trouvera automatiquement sur les broches du port
x (A ou B). Permettant de mémoriser une donnée lors d'une écriture. Si les lignes de
données fonctionnent comme des sorties, une lecture des registres de données est
possible. Elle fournit en fait l'ancienne valeur.

En entrée : Si une des broches PA0 à PA7 ou PB0 à PB7 est en entrée, ce sera
l'état du signal présent sur la broche qui influencera le contenu du registre ORx.
Dans ce cas le µp6809 devra lire dans le registre ORx. Si les broches Px0 à Px7
reçoivent une donnée alors on aura la possibilité de lire le registre ORx pour
récupérer la donnée représentant les états du port. Les données présentes sur les
ports A et B sont prises en compte par une lecture de ORA et ORB mais ne sont pas
mémorisées dans ces registres. Il faut donc que ces données soient présentes
suffisamment longtemps pour être lue.
Académie Royale
Militaire
Registres du PIA 6821: Contrôle
Registre de contrôle CRA - CRB :
Ce registre permet la commande et le contrôle des ports de sortie A et B. Pour y
accéder, il suffit de fixer les entrées RS1 et RS0.
Ce registre va permettre d’accéder aux autres registres : DDRA-DDRB et ORA-
ORB à partir du bit 2 du registre de contrôle 

Registre
E/S

Registre
Direction
Organigramme d’initialisation du PIA 6821 
(port A en entrée) port B en sortie).
Cryptage d’un mot binaire: Inversion des quartets

LDA #$3A
STA $0000
LDB#$F0
STB $0001
ANDA $0001
STA $0002
LDA $0000
LDB#$0F
STB $0001
ANDA $0001
STA $0003
LDA#$04
ET1:
ROR $0002
ROL $0003
DECA
BNE ET1
LDA $0002
ADDA $0003
STA $0004
end

Vous aimerez peut-être aussi