Académique Documents
Professionnel Documents
Culture Documents
Système à microprocesseur
P 6809
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
Horloge
externe
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.
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
LDA $2222
Exemple :
LDA#$BF
STA$01EC
LDA#$01
STA $0000
LDA#$EC
STA$0001
LDA [$0000]
END
Adressage indexé
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
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
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
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.
[$1000]= . . . . . . . .
On inter-change les quartets c.à.d. le nouveau contenu devient et sera stocké dans :
[$10A0]= . . . . . . . .
Application Numérique :
[$1000] = 1110 0001
Le nouveau contenu devient :
[$10A0]= 0001 1110
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
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.
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