Académique Documents
Professionnel Documents
Culture Documents
Système À Microprocesseur
Système À Microprocesseur
Système à microprocesseur
P 6809
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
Exemple de Simulation de quelques d’instruction du
6809
1) Réaliser un programme permettant de 2) Réaliser un programme permettant
faire allumer la 1ère LED puis la 2ème LED de faire clignoter une ligne circulaire
d’une série de 8 LEDs . de LED en continu .
***** Initialisation du Port A **** ***** Initialisation du Port A ****
CLR$8001 CLR$8001
LDA#$FF LDA#$FF
STA$8000 STA$8000
LDB#$04 LDB#$04
STB$8001 STB$8001 Solution
*************** Fin *************** *************** Fin ***************
LDA#$01 LDA#$01
incomplète
ASLA ET1:
STA$8000 ASLA
END STA$8000
BRA ET1
END
***** Initialisation du Port A ****
CLR$8001
Solution de l’exercice 2 avec L’instruction ROL LDA#$FF
STA$8000
3) Réaliser un programme permettant de faire LDB#$04
STB$8001
clignoter une ligne circulaire de LED 10 fois. *************** Fin ***************
LDA#$01
ET1:
ROLA
STA$8000
BRA ET1
END
Exemple de Simulation de quelques d’instruction du
6809: branchement
LDA#$FF
STA$0000
ET1:
ASL$0000
BEQ ET1
END
LDA#$FF
STA$0000
ET1:
***** Initialisation du Port A ****
ASL$0000 CLR$8001
BNE ET1 LDA#$FF
STA$8000
END LDB#$04
STB$8001
*************** Fin ***************
LDB#$59
LDA#$01
ET1:
Soustrait 1 à l’accumulateur A ou B , une adresse STA$8000
mémoire ROLA
DECB
LDA#$A0 BEQ ET2
DECA BRA ET1
END ET2:
END
Exemple de Simulation
3) Réaliser un programme permettant ***** Initialisation du Port A ****
de faire clignoter une ligne circulaire CLR$8001
de LED 10 fois, puis une rotation en LDA#$FF
continu à droite. STA$8000
LDB#$04
STB$8001
*************** Fin ***************
LDB#$59
LDA#$01
ET1:
STA$8000
ROLA
DECB
BEQ ET2
BRA ET1
ET2:
LDA#$80
ET3:
RORA
STA$8000
BRA ET3
END
Exemple de Simulation
4) Refaire le programme avec un nombre de rotation à saisir.
1) Etape de configuration
****** Initialisation du Port A en sortie**** 2) Etape de saisie
CLR$8001
LDA#$FF BITA ou BITB ****** Initialisation du Port A en sortie****
CLR$8001
STA$8000
LDA#$FF
LDB#$04
STA$8000
STB$8001 LDA#$0F LDB#$04
****Initialisation Port B en entrée
CLR$8003 ET1: STB$8001
****Initialisation Port B en entrée
LDA#$00 BITA#$10 CLR$8003
STA$8002
LDB#$04 BNE ET1 LDA#$00
STA$8002
STB$8003 END LDB#$04
*************** Fin ***************
STB$8003
LDA$8002
*************** Fin ***************
END
ET1:
LDA #$80
BITA$8002
BEQ ET1
LDA $8002
LDB#$7F
ANDB$8002
END
LDA#$0F
ET1:
Résultat : On affecte pas l’accumulateur, c’est BITA#$01
une opération de test. BNE ET1
END
Exemple de Simulation
3) Réaliser un programme permettant
de faire clignoter une ligne circulaire de LED 10 fois, puis une rotation en continu à droite et enfin saisir des données
provenant du port 2 vers l’accumulateur B.
LDX#$AFDC
CMPX#$AFDA
END
CMPS#$AFDA
END
4-5 V2 : /1101
6-7 V3 : /0110
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
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
Programmation du microprocesseur 6809
Académie Royale
Militaire
2) Registres de piles S et U
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
Registres pointeurs du microprocesseur 6809
Académie Royale
Militaire
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
Interruptions du microprocesseur 6809
Académie Royale
Militaire
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
PIA 6821: Organisation interne
Académie Royale
Militaire
Adressage du PIA 6821
Académie Royale
Militaire
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.
Registres du PIA 6821: Contrôle
Académie Royale
Militaire
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