Microprocesseurs et Interfaces 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 cidessous. 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. Conversion A/N PA7-PA0 PC7 PC5 PC4 RD PC3 PB7-PB0 SC IBF OR STB Signal C (Conversion) EOC INTRA Conversion D7-D0N/A Signal traité 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. 112 B. Rejeb, ISITCom. 2009. Microprocesseurs et Interfaces Registre de contrôle du 8255 1 D6 D5 D4 D3 D2 D1 D0 Groupe A Groupe B Mode 00 : Mode 0 01 : Mode 1 1x : Mode 2 Port C bas 0 : Sortie 1 : Entrée Port B 0 : Sortie 1 : Entrée Port A 0 : Sortie 1 : Entrée Mode 0 : Mode 0 1 : Mode 1 Port C haut 0 : Sortie 1 : Entrée 0 X X X Sélection d’in bit du port C D3 D2 D1 D0 BIT SET 1 : SET 0 : RESET 113 B. Rejeb, ISITCom. 2009. Microprocesseurs et Interfaces 8 COR RE CTIO N DSEG SEGMENT PORT_A PORT_B PORT_C PORT_CM COMMANDE TAB DSEG ENDS EQU EQU EQU EQU EQU DB PROC INIT Mov dx, PORT_CM Mov al, B0H Out dx, al Mov al, 09 Out dx, al Mov dx, PORT_CM Mov AL, OFH Out dx, al Mov al, 0EH Out dx, al Xor di, di Ret INIT ENDP 330H 331H 332H 333H B0H ‘0123456789ABCDEF’ ; INTEA =1 Activer l'interrution du microprocesseur ; set PC7 ; Reset PC7 ; Compteur des acquisitions AQUI PROC Cli Mov dx, PORT_A In al, dx ; lecture du port A Push ax Mov bx, OFFSET TAB Mov cl,4 Shr al,cl Xlat Mov ah, 2 Mov dl, al Int 21H ; début de TAB pour xlat ; converstion ASCII ; affichage Pop ax Push ax And al, 0Fh 114 B. Rejeb, ISITCom. 2009. Microprocesseurs et Interfaces XLAT ; conversion ASCII Mov ah, 2 Mov dl, al Int 21h ; affichage octet bat Pop ax Shl al, 1 Mov dx, PORT_B Out dx, al Sti ; multiplication par 2 et envoie de la donnée ; sur le port B 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 115 B. Rejeb, ISITCom. 2009.