Vous êtes sur la page 1sur 10

Microprocesseur Motorola 6809

Mise en œuvre de programme d’interruption.Etude des niveaux


de priorité des trois interruptions matérielles IRQ, FIRQ, et NMI

Objectif du TP :

o Programmer des interruptions.


o Comparer les niveaux de priorité des trois interruptions matérielles
IRQ, FIRQ, et NMI.
PIA 6809 ;

Le PIA 6809 est un circuit d’interface permettant au processeur de dialoguer en


liaison parallèle avec les périphériques. Dans l’exemple traité dans ce TP, le processeur
communique avec deux séries de 8 diodes à travers une liaison matérialisée par les
ports parallèles 8 bits (port A ou port B) du PIA.
Adresses des registres internes du PIA :

 Port A :
o DDRA et ORA se trouvent tous les deux à l’adresse $ 8000
o CRA est à l’adresse $8001
 Port B :
o DDRA et ORA se trouvent tous les deux à l’adresse $8002
o CRA est à l’adresse $8003
Les ports A et B sont identiques. Dans ce qui suit. On parlera de port X sachant que
cela peut désigner aussi bien le port A que le port B.
Contenu du registre de commande CRX

Le contenu de ce registre de valider ou non l’accès en écriture aux registres DDRX


et ORX.
Si le contenu du bit CRX est 0 (1) alors le registre DDRX est accessible en lecture
(écriture).
Contenu du registre de direction (de sens) de données DDRX
On dit que le port X est déclaré en sortie lorsque l’information va du port X vers
l’extérieur. Dans le cas contraire, il est dit déclarer en entrée.
La déclaration du port X en entrée ou en sortie se fait par programmation
(remplissage) du registre DDRX comme suit :

1
Pour déclarer un bit du port X en sortie (en entrée), il faut mettre un 1 (un 0) dans
le bit de même rang du registre DDRX.
Contenu du registre de sortie ORX

L’information (0 ou 1) à sortir via le bit i du port X correspond au contenu (0 ou 1)


du bit de même rang du registre ORX.
Câblage de la maquette expérimentale :

1- on vérifié que la maquette d’extension référence 003. Contenant les deux


séries de diodes rouges et vertes. Est branchée sur le connecteur 1 de la
maquette MC 09. cette carte est spécialement dédiée à la programmation des
circuits PIA 6821 et VIA 6522.
2- On relié la maquette MC 09 la source.

Première partie :
Programmation du PIA 6821

EXERCICE 1 :

On se propose de construite un PROG 1 qui permet d’allumer les quatre diodes de


poids fort. Reliés au port B et maintenir éteintes les quatre diodes rouges de poids
faible du même port B. on chargera en mémoire à partir de l’adresse $ 0000.

PROG_1
Adresse Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0000 7F 80 03 - CLR $8003 étendu 3 CRB2=0(accèsDDRB)

$0003 86 FF - LDA #$FF immédiat 2 A ← $FF

$0005 B7 80 02 - STA $8002 étendu 3 Port B en Sortie

$0008 86 04 - LDA #$04 immédiat 2 A ← $04

$000A B7 80 03 - STA $8003 étendu 3 CRB2=1 (accès ORB)

$000D 86 0F - LDA #$0F immédiat 2 A ← $0F

$000F B7 80 02 - STA $8002 étendu 3 ORB ← $0F

$0012 3F - - SWI - inherent 1 Fin du programme

2
EXERCICE 2 :

On propose un sous programme de temporisation DELAI qui permet à occuper le


processeur pendant un certain temps ΔT. A réaliser une tache quelconque

DELAI
Adress Code machine Etiquett Code mnémonique Mode Nbr. Commentair

e C.Opératio. C.Opérand. e Opération Opérande d’adressage Octet e

$0500 8E FC 04 - LDX #$FC04 immédiat 3 X ← $FC04

$0503 30 88 FF LOOK LEAX $FF, X immédiat 2 A ← $FF

$0506 26 FB - BNE LOOK étendu 3 Port B en

Sortie

$0508 39 - - RTS #$04 immédiat 2 A ← $04

EXERCICE 3

On propose un programme PROG 2 qui permet d’allumer alternativement les 4


diodes rouges de poids fort et les 4 diodes rouges de poids faible.

PROG_2
Adress Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

e C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0000 7F 80 03 CLR $8003 étendu 3 CRB2=0(accèsDDRB)

$0003 86 FF LDA #$FF immédiat 2 A ← $FF

$0005 B7 80 02 STA $8002 étendu 3 Port B en Sortie

$0008 86 04 LDA #$04 immédiat 2 A ← $04

$000A B7 80 03 STA $8003 étendu 3 CRB2=1 (accès ORB)

$000D 86 0F LDA #$0F immédiat 2 A ← $0F

$000F B7 80 02 TOTO STA $8002 étendu 3 ORB ← $0F

$0012 43 COMA inhérent 1 A ← A

$0013 BD 05 00 JSR $0500 étendu 3 Appel de sous-

programme

$0016 7E 00 0F JMP TOTO étendu 3 Saut inconditionnel

3
$0019 3F SWI inherent 1 Fin du programme

EXERCICE 4 :

On propose un programme PROG 3 qui permet d’allumer puis éteindre


périodiquement les 8 diodes rouges du port B. Charger à partir de l’adresse $0000.

PROG_3
Adress Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

e C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0000 7F 80 03 - CLR $8003 étendu 3 CRB2=0(accèsDDRB)

$0003 86 FF - LDA #$FF immédiat 2 A ← $FF

$0005 B7 80 02 - STA $8002 étendu 3 Port B en Sortie

$0008 86 04 - LDA #$04 immédiat 2 A ← $04

$000A B7 80 03 - STA $8003 étendu 3 CRB2=1 (accès ORB)

$000D 86 FF - LDA #$FF immédiat 2 A ← $0F

$000F B7 80 02 TOTO STA $8002 étendu 3 ORB ← $0F

$0012 43 - COMA inhérent 1 A ← A

$0013 BD 05 00 - JSR $0500 étendu 3 Appel de sous-

programme

$0016 7E 00 0F - JMP TOTO étendu 3 Saut inconditionnel

$0019 3F - - SWI - inherent 1 Fin du programme

EXERCICE 5 :

On propose un programme PROG 4 qui permet d’allumer puis éteintes


périodiquement les 8 diodes vertes du port A.

4
PROG 4
Adress Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

e C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0000 7F 80 01 - CLR $8001 étendu 3 CRA2=0(accèsDDRA)

$0003 86 FF - LDA #$FF immédiat 2 A ← $FF

$0005 B7 80 00 - STA $8000 étendu 3 Port A en Sortie

$0008 86 04 - LDA #$04 immédiat 2 A ← $04

$000A B7 80 01 - STA $8001 étendu 3 CRA2=1 (accès ORA)

$000D 86 FF - LDA #$FF immédiat 2 A ← $0F

$000F B7 80 00 TOTO STA $8000 étendu 3 ORA ← $0F

$0012 43 - COMA inhérent 1 A ← A

$0013 BD 05 00 - JSR $0500 étendu 3 Appel de sous-

programme

$0016 7E 00 0 F - JMP TOTO étendu 3 Saut inconditionnel

$0019 3F - - SWI - inherent 1 Fin du programme

EXERCICE 6 :
On propose un programme PROG 5 qui permet de de réaliser un chenillard sur les
8 diodes rouges du port B.

PROG_5
Adress Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

e C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0000 7F 80 03 - CLR $8003 étendu 3 CRB2=0(accèsDDRB)

$0003 86 FF - LDA #$FF immédiat 2 A ← $FF

$0005 B7 80 02 - STA $8002 étendu 3 Port B en Sortie

$0008 86 04 - LDA #$04 immédiat 2 A ← $04

$000A B7 80 03 - STA $8003 étendu 3 CRB2=1 (accès ORB)

$000D 86 FF LOOP LDA #$7F immédiat 2 A ← $0F

$000F B7 80 02 TOTO STA $8002 étendu 3 ORB ← $0F

0011 BD 05 00 - JSR $0500 relatif 3 Appel de sous-

5
programme

$0014 43 - - COMA inhérent 1 A ← A

$0015 44 - - LSRA étendu 1 Appel de sous-

programme

0016 43 - - COMA inhérent 1 A ← A

0017 81 FF - CMPA #$FF immédiat 2 A - $FF

0019 27 F1 - BEQ LOOP relatif 2 Branchement à

LOOP si Z = 1

$001C 7E 00 0F - JMP TOTO relatif 3 Saut inconditionnel

$001F 3F - - SWI inherent 1 Fin du programme

Second partie
Etude des niveaux de priorité des trois interruptions matérielles IRQ,
FIRQ, et NMI,

Le but de cette second partie consiste à mettre en œuvre les trois interruptions
matérielles IRQ, FIRQ, et NMI du processeur 6809 et de compare ensuite leurs niveaux de
priorité.

◙ un programme d’interruption IRQ, FIRQ, et NMI possède une vecteur d’interruption qui
est une adresse 16 bits stockée en mémoire dans deux octets. Pour le MC09, ces adresses sont
réparties en mémoire comme suit :

Vecteur d’interruptions $ de résidence en mémoire


Octet MSB Octet LSB
NMI $0F60 $0F61
FIRQ $0F66 $0F67
IRQ $0F68 $0F69

La validation ou non d’une interruptions doit se terminer par l’instruction masquable se fait
au niveau du registre d’état CC (bit I pour IRQ bit F pour FIRQ :
o Si I (F) = 0 alors l’interruption IRQ (FIRQ) est validée.
o Si I (F) = 1 alors l’interruption IRQ (FIRQ) est masquée.

Travail à faire :

6
EXERCICE 1:

Pour la temporisation DELAI voir la première partie du TP.

EXERCICE 2:

On propose un sous programme d’interruptions IRQ de l’exercice 5 de la


première partie. Charger en mémoire à partir à l’adresse $0200.

SOUS –PROGRAMMAE IRQ


Adresse Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0200 7F 80 01 - CLR $8001 étendu 3 CRA2=0(accèsDDRA)

$0203 86 FF - LDA #$FF immédiat 2 A ← $FF

$0205 B7 80 00 - STA $8000 étendu 3 Port A en Sortie

$0208 86 04 - LDA #$04 immédiat 2 A ← $04

$020A B7 80 01 - STA $8001 étendu 3 CRA2=1 (accès ORA)

$040D C6 04 LDB #$04 Immédiat 2 B ← $04


$020F 86 FF - LDA #$FF immédiat 2 A ← $0F

$0211 B7 80 00 TOTO STA $8000 étendu 3 ORA ← $0F

$0214 43 - COMA inhérent 1 A ← A

$0215 BD 05 00 - JSR $0500 étendu 3 Appel de sous-

programme

$0418 5A - - DECB - Inhérent 1 A ← B-1


$0419 26 F6 - BNE TOTO relatif 3 Branchement à toto si
Z=0
$021B 3B - - RTI - inherent 1 Fin du sous- prog

EXERCICE 3:

On propose un sous programme d’interruptions FIRQ de l’exercice 4 de la


première partie. Charger en mémoire à partir à l’adresse $0400.

SOUS – PROGRAMME FIRQ

7
Adress Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

e C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0400 7F 80 03 - CLR $8003 étendu 3 CRB2=0(accèsDDRB)

$0403 86 FF - LDA #$FF immédiat 2 A ← $FF

$0405 B7 80 02 - STA $8002 étendu 3 Port B en Sortie

$0408 86 04 - LDA #$04 immédiat 2 A ← $04

$040A B7 80 03 - STA $8003 étendu 3 CRB2=1 (accès ORB)

$040D C6 04 LDB #$04 Immédiat 2 B ← $04


$040F 86 FF - LDA #$FF immédiat 2 A ← $0F

$0411 B7 80 02 TOTO STA $8002 étendu 3 ORB ← $0F

$0414 43 - COMA inhérent 1 A ← A

$0415 BD 05 00 - JSR $0500 étendu 3 Appel de sous-

programme

$0418 5A - - DECB - Inhérent 1 A ← B-1


$0419 26 F6 - BNE TOTO relatif 3 Branchement à toto si
Z=0
$041B 3B - - RTI - inherent 1 Fin du programme

EXERCICE 4:

On propose un sous programme d’interruptions NMI de l’exercice 3 de la première


partie. Charger en mémoire à partir à l’adresse $0100.

SOUS – PROGRAMME NMI


Adress Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

e C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0100 7F 80 03 - CLR $8003 étendu 3 CRB2=0(accèsDDRB)

$0103 86 FF - LDA #$FF immédiat 2 A ← $FF

$0105 B7 80 02 - STA $8002 étendu 3 Port B en Sortie

$0108 86 04 - LDA #$04 immédiat 2 A ← $04

$010A B7 80 03 - STA $8003 étendu 3 CRB2=1 (accès ORB)

$010D C6 08 - LDB#$08 #$08 Immédiat 2 B ← $08

$010F 86 0F - LDA #$0F immédiat 2 A ← $0F

8
$0111 B7 80 02 TOTO STA $8002 étendu 3 ORB ← $0F

$0114 43 - - COMA inhérent 1 A ← A

$0115 BD 05 00 - JSR $0500 étendu 3 Appel de sous-

programme

$0118 5A - - DECB - Inhérent 1 A ← B-1


Branchement à toto si
$0119 26 F6 - BNE TOTO Relatif 2
Z=0

$011B 3B - - RTI - inherent 1 Fin du programme

EXERCICE 4:

On propose un programme principal d’interruptions de l’exercice 6 de la première


partie. Charger en mémoire à partir à l’adresse $0000.

PORGRAMME PRINCIPALE
Adress Code machine Etiquette Code mnémonique Mode Nbr. Commentaire

e C.Opératio. C.Opérand. Opération Opérande d’adressage Octet

$0000 8E 01 00 - LDX #$0100 Immédiat 3 Chargement du vecteur

IRQ par $0100


$0003 BF 0F 68 - STX $0F68 Etendu 3

$0006 8E 0200 - LDX #$0200 Immédiat 3 Chargement du vecteur

FIRQ $0200
$0009 BF 0F 66 - STX $0F66 Etendu 3

$000C 8E 03 00 - LDX #$0300 Immédiat 3 Chargement du vecteur

NMI par $0300


$000F BF 0F 60 - STX $0F60 Etendu 3

$0012 1C AF - ANDCC #$AF Immédiat 2 Autorisation de IRQ et

FIRQ

$0014 7F 80 03 - CLR $8003 étendu 3 CRB2=0(accèsDDRB)

$0017 86 FF - LDA #$FF immédiat 2 A ← $FF

$0019 B7 80 02 - STA $8002 étendu 3 Port B en Sortie

$001C 86 04 - LDA #$04 immédiat 2 A ← $04

$002E B7 80 03 - STA $8003 étendu 3 CRB2=1 (accès ORB)

$0021 86 7F LOOP LDA #$7F immédiat 2 A ← $7F

$0023 B7 80 02 TOTO STA $8002 étendu 3 ORB ← $7F

$0026 BD 05 00 - JSR $0500 relatif 3 Appel de sous-

9
programme

$0029 43 - - COMA inhérent 1 A ← A

$002A 44 - - LSRA étendu 1 Appel de sous-

programme

$002B 43 - - COMA inhérent 1 A ← A

$002C 81 FF - CMPA #$FF immédiat 2 A - $FF

$002E 27 F1 - BEQ LOOP relatif 2 Branchement à

LOOP si Z = 1

$0030 7E 00 0F - JMP TOTO relatif 3 Saut inconditionnel

$0033 3F - - SWI inherent 1 Fin du programme

Procédure de provocation des interruptions IRQ, FIRQ, et NMI :

 Interruption NMI
L’interruption NMI est une interruption non masquable. Elle possède, sur le
clavier de la carte MC09, une touche qu’il suffit d’appuyer pour provoquer cette
interruption.
 Interruption IRQ et FIRQ :
Les interruptions IRQ et FIRQ possède sont des interruptions masquables par
programme. Leur provocation comme suit :
o Interruption IRQ//
Comme elle est active au niveau bas, un fil relié à la masse de la carte
MC09 permet d’activer cette interruption en touchant avec ce fil la
broche IRQ (broche N° 3) sur le processeur 6809.
o Interruption FIRQ //
Comme elle est active au niveau bas, un fil relié à la masse de la carte
MC09 permet d’activer cette interruption en touchant avec ce fil la
Broche FIRQ (broche N° 4) sur le processeur 6809.

CONCLUSION :

 Pour le teste qui permet de classer, par ordre de priorité croissante, les
trois interruptions IRQ, FIRQ, et NMI nous arrivons pas à le faire à cause
d’une mal programmation De la carte MC09.

10

Vous aimerez peut-être aussi