Exercice 8255 mode1

Telechargé par momo fk
112
Microprocesseurs et Interfaces
B. Rejeb, ISITCom. 2009.
Exercice :
On se propose d’écrire un programme pour gérer une carte d’interface qui assure la
conversion Analogique/Numérique d’un signal (acquisition de la donnée, affichage,
traitement puis sa sortie). Cette carte comporte essentiellement l’interface parallèle 8255, un
convertisseur Analogique/Numérique et un bloc de contrôle de la conversion, figure ci-
dessous.
Le début de la 1ère conversion est lancé par le front descendant du signal SC (Start
Conversion) qui sera généré par le bit 7 du port C (PC7 en set/reset). La fin de conversion
EOC est transmise au 8255 à travers le bit 4 du port C (PC4) par le signal STB. Celui-ci
active le signal IBF (Input Buffer Full: 5ème bit du port C) et interrompe le microprocesseur
pour la lecture de la donner.
Les conversions suivantes seront déclenchées automatiquement par le front descendant du
signal IBF après chaque lecture de la donnée par le microprocesseur.
La routine d’interruption (supposé déjà existante) fait appel à une procédure ACQUI qui
inhibe les interruptions durant l’exécution de cette procédure, lit la donnée du port A, converti
la donnée en ASCII, affiche la donnée sur l’écran à l’aide de la fonction 02 de l’interruption
21h du DOS, multiplie la donnée par 2 et la faire sortir sur le port B.
Le groupe A de 8255 est programmé en mode 1 et le groupe B en mode 0. Nous supposons
que les ports A, B, C et de contrôle ont respectivement pour Adresse : 330h. 331h, 332h et
333h.
1. Déclarer dans le segment de donnée DSEG les adresses des différents registres du 8255, le
mot de contrôle ainsi que les autres déclarations nécessaires.
2. Ecrire une procédure INIT qui permet d’initialiser le 8255 ainsi qu’un compteur des
acquisitions et de lancer la conversion.
3. Ecrire la procédure ACQUI qui permet :
D’inhibe les interruptions durant l’exécution de cette procédure,
De lire la donnée du port A,
De convertir la donnée binaire en ASCII,
De multiplier la donnée par 2 et la faire sortir sur le port B.
4. Ecrire le programme principal correspondant qui permet d’initialiser et lancer
l’acquisition, le microprocesseur entrera ensuite dans une boucle de lecture du clavier
jusqu'à ce qu’on appuie sur la barre d’espace (code ASCII 20h) pour sortir du programme.
Pour la lecture du clavier on utilise la fonction 0 de l’INT 16h.
PA7-PA0
PB7-PB0
PC5
PC4
SC
EOC
Conversion
A/N
D7-D0
Signal
STB
PC3
IBF
Conversion
Signal traité
PC7 (Conversion)
C
INTRA
OR
RD
N/A
113
Microprocesseurs et Interfaces
B. Rejeb, ISITCom. 2009.
Registre de contrôle du 8255
1
D6 D4
D5 D3 D2 D1 D0
Port C bas
0 : Sortie
1 : Entrée
Port B
0 : Sortie
1 : Entrée
Mode
0 : Mode 0
1 : Mode 1
Port C haut
0 : Sortie
1 : Entrée
Port A
0 : Sortie
1 : Entrée
Mode
00 : Mode 0
01 : Mode 1
1x : Mode 2
Groupe B
Groupe A
0
X X
X D3 D2 D1 D0
BIT SET
1 : SET
0 : RESET
Sélection
d’in bit du
port C
114
Microprocesseurs et Interfaces
B. Rejeb, ISITCom. 2009.
8
CORRECTION
DSEG SEGMENT
PORT_A EQU 330H
PORT_B EQU 331H
PORT_C EQU 332H
PORT_CM EQU 333H
COMMANDE EQU B0H
TAB DB ‘0123456789ABCDEF’
DSEG ENDS
PROC INIT
Mov dx, PORT_CM
Mov al, B0H
Out dx, al
Mov al, 09
Out dx, al ; INTEA =1
Mov dx, PORT_CM
Mov AL, OFH ; set PC7
Out dx, al
Mov al, 0EH ; Reset PC7
Out dx, al
Xor di, di ; Compteur des acquisitions
Ret
INIT ENDP
AQUI PROC
Cli
Mov dx, PORT_A
In al, dx ; lecture du port A
Push ax
Mov bx, OFFSET TAB ; début de TAB pour xlat
Mov cl,4
Shr al,cl
Xlat ; converstion ASCII
Mov ah, 2
Mov dl, al
Int 21H ; affichage
Pop ax
Push ax
And al, 0Fh
Activer l'interrution du microprocesseur
115
Microprocesseurs et Interfaces
B. Rejeb, ISITCom. 2009.
XLAT ; conversion ASCII
Mov ah, 2
Mov dl, al
Int 21h ; affichage octet bat
Pop ax
Shl al, 1 ; multiplication par 2 et envoie de la donnée
Mov dx, PORT_B ; sur le port B
Out dx, al
Sti
AQUI ENDP
CODE SEGMENT
ASSUME CS, CODE, DS, DSEG, ES: DSEG
Mov ax, DSEG
Mov ds, ax
Mov es, ax
CALL INIT
B1: Mov ah, 0
Int 16h
Cmp al, 20h
Jnz B1
Mov ah, 4Ch
Int 21h
CODE ENDS
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !