75
République Tunisienne Ministère de l’Enseignement Supérieur Fascicule de Travaux Pratiques Circuits d’Interfaces 4 ème niveau Informatique Industrielle MOHAMED ALI KAMMOUN Année Universitaire : 2006-2007 Version : 2.0 Institut Supérieur des Etudes Technologiques de Mahdia

Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

  • Upload
    lyhuong

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

République Tunisienne Ministère de l’Enseignement Supérieur

Fascicule de Travaux Pratiques Circuits d’Interfaces

4ème niveau Informatique Industrielle

MOHAMED ALI KAMMOUN

Année Universitaire : 2006-2007 Version : 2.0

Institut Supérieur des Etudes Technologiques de Mahdia

Page 2: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

AAVVAANNTT--PPRROOPPOOSS Organisation des séances de travaux pratiques Ce manuel rassemble une série d’exercices pratiques ayant pour but de permettre à l’étudiant de mieux comprendre les implications pratiques de son cours de Circuits d’Interfaces. L’accent y est mis sur l’utilisation pratique de la maquette didactique MTS-86C pour la conception de quelques processus industriels qu’on peut les commander à travers des interfaces associées a un microprocesseur de type i80x86. L’assembleur est en effet un langage largement répandu depuis bien longtemps, et y reste aujourd’hui, autant dans les universités que dans les centres de recherche et développement, ainsi que dans l’industrie. L’ouvrage est divisé en 8 laboratoires. Les laboratoires ont pour objet de fournir aux étudiant un certains nombres d’informations qui leurs sera utiles pour débuter leurs projets de fin d’étude dont un nombre important est consacré à l’étude de des principes de programmation des circuits d’interfaces. Le but de ces TP est de stimuler l’intérêt de l’étudiant pour l’usage du langage assembleur pour la commande industrielle, à travers une démarche de synthèse plutôt que par le biais de travaux d’analyse. Il ne s’agit donc pas ici d’illustrer le cours, mais bien de le mettre en pratique. Dans cette perspective, les laboratoires préparent l’étudiant à acquérir une certaine pratique de manipuler les interfaces programmables, en le dotant d’un ensemble d’outils : programmation assembleur, électronique, manipulation des registres internes des interfaces, etc.…. On y aborde donc les problèmes suivants : 1. Programmation de l’interface parallèle i8255 2. Programmation de l’interface série i8251 3. Programmation d’un contrôleur d’interruption i8259 4. Programmation d’un Timer i8253

Appréciation du travail de l’étudiant L’étudiant sera coté en fonction de son niveau de participation aux séances de laboratoires, ainsi que de la qualité (fond et forme) de ses comptes-rendus. Ce rapport devra expliciter le plus clairement possible :

• Les techniques utilisées : principe, structure, prévision des problèmes à résoudre pour la mise en œuvre ;

• Les détails des modules implémentés sous la forme de fonctions ; • Une analyse des résultats fournis.

Page 3: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Table des matières PRESENTATION DU KIT MTS-86C ................................................................................................................ 2 1. LE MATERIEL MTS8-86C ....................................................................................................................... 2 2. LA DISQUETTE ......................................................................................................................................... 2 3. LE MICROSYSTEME MTS-86C.............................................................................................................. 2

3.1. DESCRIPTION ........................................................................................................................................ 2 3.2. PLAN DE L’ESPACE MEMOIRE................................................................................................................ 3 3.3. ADRESSAGE DES ENTREES/SORTIES...................................................................................................... 3

4. LE MICROPROCESSEUR 8086............................................................................................................... 4 4.1. ARCHITECTURE GENERALE ................................................................................................................... 4 4.2. EXECUTION UNIT.................................................................................................................................. 5 4.3. BUS INTERFACE UNIT ........................................................................................................................... 5 4.4. FONCTIONNEMENT................................................................................................................................ 6 4.5. LES REGISTRES ..................................................................................................................................... 7 4.6. MODE D’ADRESSAGE ............................................................................................................................ 8

4.6.1. Adressage direct en mémoire .......................................................................................................... 8 4.6.2. Adressage direct par register .......................................................................................................... 8 4.6.3. Adressage immédiat ........................................................................................................................ 9 4.6.4. Adressage indirect........................................................................................................................... 9

4.7. JEUX D’INSTRUCTIONS ........................................................................................................................ 10 MANIPULATION 1 : INITIATION A LA PROGRAMMATION EN ASSEMBLEUR ............................. 13 1. LA CONNEXION ENTRE LE PC ET LA CARTE MTS-86C ............................................................. 13 2. UTILISATION DE LA FENETRE DE CONNEXION ......................................................................... 14 MANIPULATION 2 : INITIATION A LA PROGRAMMATION EN LANGAGE MACHINE................ 16 1. BUT DU TP................................................................................................................................................ 16 2. LE CLAVIER DE LA CARTE MTS-86C............................................................................................... 16 3. PROGRAMMATION EN LANGAGE MACHINE............................................................................... 17

3.1. INITIATION.......................................................................................................................................... 17 3.2. PROGRAMMATION EN LANGAGE MACHINE.......................................................................................... 18

3.2.1. Programme 1................................................................................................................................. 18 3.2.2. Programme 2................................................................................................................................. 19

MANIPULATION 3 : PROGRAMMATION DU 8255................................................................................... 21 1. BUT DU TP................................................................................................................................................ 21 2. PRESENTATION...................................................................................................................................... 21 3. LE PPI 8255 ............................................................................................................................................... 21

3.1. FONCTIONS DES BROCHES................................................................................................................... 21 3.2. LE CONTROLE DES GROUPES ............................................................................................................... 22 3.3. LA SELECTION DES MODES.................................................................................................................. 22

4. MANIPULATION..................................................................................................................................... 22 4.1. EXEMPLE DE PROGRAMMATION .......................................................................................................... 22 4.2. PROGRAMMATION DE L’INTERFACE 8255 ........................................................................................... 23

5. ANNEXE .................................................................................................................................................... 24 MANIPULATION 4 : PROGRAMMATION DU 8251................................................................................... 27 1. BUT DU TP................................................................................................................................................ 27

Page 4: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

2. PRESENTATION...................................................................................................................................... 27 3. LE 8251....................................................................................................................................................... 27

3.1. FONCTIONS DES BROCHES................................................................................................................... 27 3.2. PROGRAMMATION DU 8251 ................................................................................................................ 29

3.2.1. L’instruction de mode (Mode Instruction) .................................................................................... 29 3.2.2. L’instruction de commande (Command Instruction)..................................................................... 32 3.2.3. Définition du mot d’état (Status Read).......................................................................................... 33

3.3. APPLICATION DU 8251........................................................................................................................ 33 4. MANIPULATION..................................................................................................................................... 34 MANIPULATION 5 : PROGRAMMATION DU 8259................................................................................... 37 1. BUT DU TP................................................................................................................................................ 37 2. LES INTERRUPTIONS ........................................................................................................................... 37 3. LE 8259....................................................................................................................................................... 37 4. REGISTRES ET PROGRAMMATION DU 8259.................................................................................. 38

4.1. ICW1 : REGISTRE MODE DE FONCTIONNEMENT................................................................................... 38 4.2. ICW2 : REGISTRE VECTEUR D'INTERRUPTION ..................................................................................... 38 4.3. ICW3 : REGISTRE CONFIGURATION EN CASCADE ................................................................................ 39 4.4. ICW4 : REGISTRE FIN D'INTERRUPTION ............................................................................................... 39 4.5. OCW1 : REGISTRE MASQUE DES INTERRUPTIONS (LECTURE/ECRITURE) ............................................ 40 4.6. OCW2 : REGISTRE PRIORITE DES INTERRUPTIONS............................................................................... 40 4.7. OCW3 : REGISTRE GESTION DES INTERRUPTIONS ............................................................................... 41 4.8. IRR : (INTERRUPT REQUEST REGISTER = REGISTRE DEMANDE D'INTERRUPTION) ............................... 41 4.9. ISR : (IN SERVICE REGISTER = REGISTRE INTERRUPTION EN SERVICE) ............................................... 42

5. SIGNAUX DES ENTREES SORTIES DU 8259 .................................................................................... 42 6. MANIPULATION..................................................................................................................................... 42

6.1. EXEMPLE DE PROGRAMMATION .......................................................................................................... 43 6.2. PROGRAMMATION DU 8259 ................................................................................................................ 44

MANIPULATION 6 : PROGRAMMATION DU 8253................................................................................... 46 1. BUT DU TP................................................................................................................................................ 46 2. LE 8253....................................................................................................................................................... 46 3. PROGRAMMATION DU 8253................................................................................................................ 48

3.1. FORMAT DU MOT DE CONTROLE.......................................................................................................... 48 3.1.1. Définitions des bits ........................................................................................................................ 48 3.1.2. Les modes...................................................................................................................................... 49

3.2. PROCEDURES DE LECTURE/ECRITURE.................................................................................................. 51 3.2.1. Procédure d’écriture ..................................................................................................................... 51 3.2.2. Procédure de lecture ..................................................................................................................... 52

4. MANIPULATION..................................................................................................................................... 52 4.1. EXEMPLE ............................................................................................................................................ 52 4.2. TRAVAIL DEMANDE ............................................................................................................................ 54

MANIPULATION 7 : PROGRAMMATION DU PORT SERIE SOUS VISUAL BASIC .......................... 56 1. PRESENTATION DU TP......................................................................................................................... 56 2. LE MICROSOFT COMM CONTROL 6.0............................................................................................. 56 3. LES PROPRIETES DE BASE DU MICROSOFT COMM CONTROL ............................................. 57 4. MANIPULATION : COMMUNIQUER AVEC UN AUTRE PC VIA LE PORT COM.................... 60 5. ANNEXE .................................................................................................................................................... 62

Page 5: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

MANIPULATION 8 : PROGRAMMATION DE L’INTERFACE PARALLELE SOUS VISUAL BASIC.............................................................................................................................................................................. 65 1. INTRODUCTION ..................................................................................................................................... 65 2. LES MODES DU PORT PARALLELE.................................................................................................. 65 3. HARDWARE............................................................................................................................................. 65 4. PROGRAMMATION ............................................................................................................................... 67 5. LA THEORIE « INPOUT32.DLL » ........................................................................................................ 67 6. MANIPULATION..................................................................................................................................... 68

6.1. EXEMPLE DE PROGRAMMATION .......................................................................................................... 68 6.2. PROGRAMMATION .............................................................................................................................. 69

Page 6: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Présentation du Kit MTS-86C Objectif :

Cette partie est consacrée à la présentation du Kit MTS-86C. Ce kit sera utilisé par la suite

comme matérielle au cours des séances de travaux pratiques « Circuits d’Interfaces ». Cette

présentation rappelle l’étudiant des notions de la programmation assembleur basée sur les

instructions du 8086.

Matériels utilisés :

- Le kit MTS-86C.

- Un ordinateur PC ou compatible doté d’un port de communication série.

Logiciel :

- Système d’exploitation Microsoft Windows.

Durée : 1H30mn

Page 7: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 2

Présentation du Kit MTS-86C Le système MTS-86C est développé autour du microprocesseur 8086 de INTEL. Il reprend dans son architecture les principales caractéristiques (matériel et logiciel) qui ont fait le succès du MTS-86C. Il comprend :

1. Le matériel MTS8-86C Cette carte est équipée de :

- Un microprocesseur 8086. - Une mémoire RAM de 64 Ko. - Une mémoire ROM de 64 Ko. - Une interface parallèle 8255 (3). - Une interface série 8251 (2). - Une interface TIMER 8253. - Un contrôleur de clavier 8279. - Un convertisseur analogique/numérique ADC0809. - Un convertisseur numérique/analogique DAC0808. - Un clavier de 24 touches. - Un afficheur LCD (16x2lignes). - Des diodes et un afficheur 7 segments. - 2 hauts parleurs. - 2 connecteurs parallèles. - 2 connecteurs séries. - Un port d’extension.

2. La disquette La disquette fournie avec le kit de développement MTS-86C comporte des exemples en assembleur ainsi que le manuel expliquant le procédé de communication entre le PC et le MTS-86C. La disquette comporte aussi :

- Un éditeur de texte (Ne.exe). - Les utilitaires de compilation (Bin2hex.exe, Exe2bin.exe, Link.exe, Masm.exe).

La connexion doit être effectuée à travers un ordinateur PC ou compatible auquel on connecte la carte MTS-86C à travers la ligne série (Com1 ou Com2). Avec le système MTS-86C on peut :

- Développer des programmes pour le microprocesseur 8086. - Ecrire des applications de gestions des différents périphériques du système : liaison série, liaison

parallèle, compteur (TIMER). - Tester une autre application à base du 8086 en la reliant à la carte MTS-86C.

3. Le microsystème MTS-86C

3.1. Description Le clavier et l’afficheur LCD Le clavier comporte 16 touches pour les digits hexadécimaux et 8 touches fonctions. Le clavier et l’afficheur permettent une utilisation du système MTS-86C en mode autonome. On peut rentrer le programme en hexa sur le clavier et visualiser le contenu de la mémoire sur l’afficheur. Le moniteur

Page 8: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 3

Le système MTS-86C est piloté par un moniteur en ROM. En mode autonome, le moniteur assure la gestion de la saisie du clavier, l’affichage du contenu de la mémoire ou des messages de dialogues et l’exécution des commandes de l’utilisateur. En mode liaison, le moniteur assure le dialogue avec le PC et l’exécution des requêtes de celui-ci (chargement de programme utilisateur en RAM, exécution du programme, lecture/écriture de la mémoire et des ports,…). La mémoire RAM Le MTS-86C possède une RAM de 64 Ko (de 00000H jusqu’à 0FFFFH) et une EPROM utilisée comme une ROM système. Le moniteur utilise les cases mémoires s’étendant de F8000H jusqu’à FDFFFH, le programme principal (pour le contrôle du clavier) utilise les cases de FE000H jusqu’à FFFFFH. Les adresses de la mémoire utilisateur est E0000H-EFFFFHet elle est utilisée par le ROM et la RAM.

3.2. Plan de l’espace mémoire

FFFFFH MONITOR PROGRAM ROM F8000H Exercise Program

EFFFFH E0000H USER MEMORY ROM, RAM

DFFFFH 10000H OPEN

FFFFH 400H User program RAM

3FFH 0H INTERRUPT VECTOR TABLE

3.3. Adressage des Entrées/Sorties

Page 9: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 4

Adresse du port Fonction du portFFFFH PPI-1 Control Word Resister Parallel I/O No 1FFFDH PPI-1 C portFFFBH PPI-1 B portFFF9H PPI-1 A portFFFEH PPI-2 Control Word Resister Parallel I/O No 2FFFCH PPI-2 C portFFFAH PPI-2 B portFFF8H PPI-2 A portFFF2H 8251-1 command RS232C port 1FFF0H 8251-1 dataFFFAH 8279 Status OR command Keypad controlFFE8H 8279 DataFFDEH 8253 command Counter & TimerFFDCH 8253 count2FFDAH 8253 count1FFD8H 8253 count0FFD2H 8251-2 command RS232C port 2FFD0H 8251-2 dataFFCAH 8259 command Interrupt controlFFC8H 8259 data3FF0H FND Display3FD8H D/A converter 8 bits D/A converter3FD6H PPI-3 Control Word Resister Parallel I/O No 33FD4H PPI-3 C port <for experiment>3FD2H PPI-3 B port3FD0H PPI-3 A port3FCEH A/D converter IN3 or IN7 8 bits A/D converter3FCCH A/D converter IN2 or IN63FCAH A/D converter IN1 or IN53FC8H A/D converter IN0 or IN4

4. Le microprocesseur 8086 Le 8086 a initié l'avènement de la famille des microprocesseurs Intel 80x86. Bien que sa conception s'appuie sur celle des microprocesseurs 8 bits qui l'on précédé (i.e. le 8080 et le 8085), il n'est pas directement compatible avec eux.

Le 8086 a été le premier microprocesseur 16 bits à être largement utilisé, et son implantation au sein des premiers IBM PC lui a permis d'imposer sa famille au premier rang des microprocesseurs 16 bits. Ses successeurs ont alors largement profité de leur compatibilité logicielle, pour s'assurer la fidélité d'une large base installée.

4.1. Architecture générale

Le séquenceur du 8086 est micro programmé, mais comporte également de nombreuses fonctions câblées, de manière à optimiser la taille du microcode. Les micro-instructions sont de type vertical, d'une largeur de 21 bits. La ROM de microprogramme comporte 504 micro-instructions. L'adresse de début du microcode d'une instruction est obtenue à l'aide d'un PLA.

Le 8086 comporte deux unités fonctionnelles susceptibles de travailler en parallèle : l'unité d'interface bus (BIU - Bus Interface Unit) et l'unité d'exécution (EU - Execution Unit).

Page 10: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 5

4.2. Exécution Unit

L'unité arithmétique et logique peut être chargée à partir de trois registres temporaires (TMPA, TMPB, TMPC) et effectuer des opérations sur des mots de 8 bits ou de 16 bits. Le résultat d'un opératiopn pourra être stocké dans un de ces trois registres, ou dans n'importe quel autre registre situé sur le bus de données interne. Ces registres, tous d'une largeur de 16 bits, se décomposent en quatre registres d'intérêt général nommés AX, BX, CX et DX, deux pointeurs de pile (SP et BP), et deux registres d'index (SI et DI).

Ces registres sont interfacés au bus de données interne à travers un opérateur [X] permettant si nécessaire de permuter les 8 bits de poids forts avec les 8 bits de poids faibles d'un mot de 16 bits lors d'un transfert, et ce dans les deux sens (lecture/écriture).

4.3. Bus Interface Unit

L'unité d'interface Bus sert à calculer les adresses. Cette unité comporte deux registres temporaires pour le calcul d'adresses en adressage indirect, quatre registres de segments (DS, CS, SS et ES), le compteur programme (IP - Instruction Pointer), et une pile de 6 octets pour stocker les codes opération et les données en attente.

Une petite ROM fournit des constantes courantes, par exemple 1 pour incrémenter IP.

Page 11: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 6

4.4. Fonctionnement

Les deux unités (BIU et EU) fonctionnent en parallèle en préchargeant les instructions dans la pile de l'unité d'interface. Cette pile de type FIFO (First-In First-Out) permet d'aller chercher jusqu'à 6 octets en avant de l'instruction en cours de traitement ce qui résulte en une optimisation de l'utilisation des bus. Pour exécuter une instruction de saut, il est nécessaire de vider la pile, puisque les instructions préchargées n'ont pas à être exécutées.

Le préchargement des instructions peut singulièrement compliquer le déverminage d'un système à base de 8086, puisque l'activité du bus n'est pas directement reliée à l'activité de l'unité d'exécution. Certaines instructions qui ont été chargées peuvent n'être jamais exécutées, ou alors plusieurs cycles mémoire plus tard.

Page 12: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 7

4.5. Les registres Bien que l'ensemble des registres de l'unité d'exécution soient relativement interchangeables, certaines instructions ou classes d'instructions existent qui exploitent plus particulièrement l'un ou l'autre des registres. Ces cas particuliers, qui tendent à spécialiser chacun des registres sont présentés ci-dessous. AX : C’est l'accumulateur. Il est plus particulièrement utilisé pour les opérations avec l'unité arithmétique et logique. Les autres registres peuvent également être utilisés dans ce but, mais les instructions correspondantes sont plus longues et plus lentes. BX : C’est un registre d'index amené à contenir des adresses pour pointer sur la mémoire. CX : Cest optimisé pour contenir un compteur de boucle. Il sera automatiquement décrémenté à chaque itération et la boucle s'arrêtera automatiquement lorsque son contenu sera nul. DX : C’est utilisé pour contenir les poids forts d'opérandes sur 32 bits (AX contiendra alors les 16 bits de poids faible) lors de multiplications 16 bits (résultat sur 32 bits) ou de divisions (dividende sur 32 bits).

Chacun des registres ci-dessus peut être considéré comme l'association de deux registres 8 bits, et être utilisé comme tel. On parlera alors respectivement de AH et AL (respectivement poids forts et poids faibles de AX), de BH et BL (poids forts et poids faibles de BX) etc... Ces registres 8 bits sont une réminiscence du 8080.

Les registres SI et DI sont utilisés par des instructions de traitement de chaînes de caractères. Une chaîne de caractères est constituée par de nombreux octets consécutifs en mémoire (les codes ASCII des caractères).

Une opération de ce type requiert en général l'adresse de la chaîne source spécifiée dans SI (Source Index) donnée par rapport au registre de segment DS (Data Segment), et l'adresse de la chaîne de destination dans DI (Destination Index) par rapport au registre de segment ES (Extra Segment).

BP et SP sont en principe destinés à gérer la pile. En général, lors d'un appel de sous-programme, on stocke dans la pile non seulement l'adresse de retour, mais également les paramètres passés au sous-programme.

Dans ce cas, BP (Base Pointer) pointe au bas du paquet d'informations passées au sous-programme, et SP (Stack Pointer) indique comme d'habitude le sommet de la pile. Une variable peut ainsi être aisément retrouvée avec une adresse relative à BP.

Les quatre registres de segment et le compteur programme, parties de l'unité d'interface bus ont déjà été évoqués.

Le registre de codes condition contient les indicateurs suivants : OF - Overflow Flag - Signale un dépassement lors d'opérations arithmétiques signées.

DF - Direction Flag - Donne la direction lors d'opérations sur des chaînes.

IF - Interrupt Flag - Autorise ou masque les interruptions externes.

TF - Trap Flag - Utilisé pour la mise au point en mode pas-à-pas.

SF - Sign Flag - Donne le signe du résultat d'une opération.

ZF - Zero Flag - Indique si le résultat d'une opération est nul.

AF - Auxilliary carry Flag - Indicateur de retenue auxilliaire, utilisé lors d'opérations arithmétiques en code

BCD.

PF - Parity Flag - Donne la parité du résultat d'une opération.

CF - Carry Flag - Indique un dépassement lors d'opérations arithmétiques non signées.

Page 13: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 8

4.6. Mode d’adressage

4.6.1. Adressage direct en mémoire L'instruction spécifie l'adresse de la donnée en mémoire. Sauf contre-indication, l'adresse physique est déterminée par rapport au registre de segment DS. L'exemple ci-dessous illustre l'utilisation d'expressions constantes correspondant à des opérandes de type "direct memory". .DATA table DB "Ceci est un message" .CODE mov ax,table ; ax <-- "C" mov ax,table+5 ; ax <-- "e" mov ax,table[9] ; ax <-- "u" Il est important de comprendre que dans cet exemple l'adresse spécifiée est bien une constante, c'est l'assembleur qui calcule par exemple l'offset de table+5 ou de table[9], et lors de l'exécution le processeur voit une constante. Les labels définis dans le segment de données représentent une valeur à une adresse, tandis que les labels définis dans le segment de code représentent l'adresse elle-même. Cette subtilité est illustrée par l'exemple suivant : .DATA truc DW suite .CODE mov ax,truc ; ax <-- valeur(truc) = suite mov bx,OFFSET truc ; bx <-- adresse(truc) jmp truc ; ip <-- valeur(truc) = suite jmp suite ; ip <-- suite jmp ax ; ip <-- (ax) = suite jmp [bx] ; ip <-- ((bx)) = (adresse(truc)) = suite suite : Les quatre instructions de saut reviennent à charger la même valeur dans le compteur programme IP. Pour spécifier une adresse à l'aide d'une constante numérique, il faut obligatoirement spécifier le segment de référence : mov ax,100h ; ax <-- 100h mov ax,[100h] ; ax <-- 100h mov ax,DS:100h ; ax <-- (DS:100h) mov ax,DS:[100h] ; ax <-- (DS:100h)

4.6.2. Adressage direct par register Ce mode d'adressage s'applique lorsque la (ou les) donnée(s) se trouve(nt) déjà dans un registre.

Source et destination sont "register direct" ...

add ax,bx ; ax <-- (ax) + (bx) mov ds,ax ; ds <-- (ax) xor ah,bl ; ah <-- (ah) [+] (bl)

Page 14: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 9

Seule la source est "register direct" ...

.DATA mem db 0eaH table dq 0fedcba9876543210h .CODE and mem,dx ; mem <-- (mem) . (dx) sub table[bx][si],ax ; table+(bx)+(si)<--(table+(bx)+(si))-(ax)

Seule la destination est "register direct" ...

compt dw 01234h shl ax,1 ; ax <-- (ax) << 1 cmp cx,compt ; indicateurs pour (cx)-(compteur)

Instructions à opérande unique :

mul bx ; dx,ax <-- (ax) x (bx) pop cx ; cx <-- ((sp)), sp <-- (sp)+2 inc ah ; ah <-- (ah) + 1 Note : lorsqu'une instruction admet deux opérandes, au moins l'un des opérandes doit être spécifié en adressage direct par registre.

4.6.3. Adressage immédiat La donnée est spécifiée directement dans le corps du programme : mov ax,247h ; ax <-- 247h add ax,52ah ; ax <-- (ax) + 52ah and ax,100h ; ax <-- (ax) . 100h

Ou encore, en utilisant des symboles :

un equ 1 ; un = 1 mov ax,un ; ax <-- un add ax,un ; ax <-- (ax) + un and ax,un ; ax <-- (ax) . un

4.6.4. Adressage indirect L'instruction spécifie un registre dans lequel se trouve l'adresse de la donnée. Seuls les registres BX, BP, SI et DI peuvent être utilisés en mode indirect. Par défaut le segment utilisé est DS sauf avec BP qui utilise SS. .DATA valeur DW 1234h .CODE mov si, OFFSET valeur ; si <-- adresse(valeur) mov ax,[si] ; ax <-- ((si)) = 1234h

Page 15: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 10

4.7. Jeux d’instructions

Page 16: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Présentation du Kit MTS-86C

ISET Mahdia Informatique Industrielle 4ème niveau 11

Page 17: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Initiation à la programmation assembleur

Objectif :

L’objectif de cette manipulation est de rappeler l’étudiant les notions de la programmation

assembleur selon les instructions du 8086. On procèdera par la suite à introduire la procédure

d’utilisation du Kit MTS-86C en utilisant des programmes assembleur simples. A la fin de la

manipulation l’étudiant sera capable de :

• Ecrire un programme assembleur ;

• Etablir la connexion entre le PC et le Kit ;

• Compiler le programme éditer et créer le fichier hexadécimal ;

• Transférer le fichier vers le Kit à travers une connexion série et le

logiciel HyperTerminal de Windows.

Matériels utilisés :

- Le Kit MTS-86C.

- Un PC ou compatible doté d’un port de communication série.

Logiciels :

- Microsoft Windows.

- Hyper Terminal.

Durée :

1H30mn

Page 18: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Initiation à la programmation en assembleur

ISET Mahdia Informatique Industrielle 4ème niveau 13

Manipulation 1 : Initiation à la programmation en assembleur

1. La connexion entre le PC et la carte MTS-86C Vous trouvez sur votre disque dur un répertoire nommé « MTS-86C »

Travail demandé :

• Ouvrez le fichier Mts-86C link-PC.pdf et lisez son contenu. • Décrivez les étapes de connexion entre le PC et la carte MTS-86C. • Tapez « H » en ligne de commande pour visualiser l’aide des commandes et décrivez-les

brièvement.

On rappelle la forme d’un programme assembleur qui s’écrit comme suit : CODE SEGMENT ;start of logic segment ASSUME CS:CODE, DS:CODE ORG 0 ; starting address START: MOV AX,CX ;agreement segment MOV DS,AX MOV ES,AX …………………(Votre code)………………… MOV AH,4CH ;go to serial monitor program after finished program INT 21H CODE ENDS ; end of logical segment (CS) END ; end of program

Editez alors le programme en assembleur suivant : CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 0 START: MOV AX,CX MOV DS,AX MOV ES,AX MOV AL,00000101b MOV BL,0Ah MOV CL,10o ADD AL,BL SUB AL,CL MOV AH,4CH INT 21H CODE ENDS END

Page 19: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Initiation à la programmation en assembleur

ISET Mahdia Informatique Industrielle 4ème niveau 14

Présenter par un organigramme les étapes de compilation d’un programme assembleur. Créer alors un

fichier Batch « .bat » permettant la création du fichier « hex » en utilisant les exécutables Bin2hex.exe, Exe2bin.exe, Masm.exe et link.exe. Dressez un organigramme représentant les étapes de création du fichier « hex ».

Vous êtes maintenant connectés à la carte, transférez le fichier « hex » vers la carte.

2. Utilisation de la fenêtre de connexion

Faire un tournage à la main du programme précédant et calculer la valeur de AX, BX et CX à chaque instruction.

Vérifiez vos résultats en compilant le programme ci-dessus étapes par étapes et en visualisant le

contenu des registres AX, BX et CX à chaque instruction en utilisant les commandes de la fenêtre de connexion.

Etapes AX BX CX 1 2 3 4 5 6

Quel(s) sont (est) le(s) type(s) d’adressage utilisés dans ce programme. Donner le programme en assembleur permettant d’implanter l’organigramme suivant :

Editer votre programme et transférer-le vers la carte MTS-86C. Retirer les valeurs des registres à chaque pas. Conclure.

Page 20: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Initiation à la programmation en langage

machine

Objectifs :

L’objectif de cette manipulation est de rappeler l’étudiant les notions de la programmation en

langage machine. On procèdera par la suite à introduire la procédure d’utilisation du Kit

MTS-86C en utilisant seulement les touches du clavier pour saisir des programmes simples. A

la fin de la manipulation l’étudiant sera capable de :

• Ecrire un programme en langage machine ;

• Utiliser le clavier du Kit MTS-86C ;

• Saisir un programme en langage machine ;

• Comparer l’utilisation du langage machine et du langage assembleur.

Matériels utilisés :

- Le Kit MTS-86C.

Durée :

1H30mn

Page 21: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Initiation à la programmation en langage machine

ISET Mahdia Informatique Industrielle 4ème niveau 16

Manipulation 2 : Initiation à la programmation en langage machine.

1. But du TP Au cours de ce TP on va essayer de toucher de près la programmation en langage machine en utilisant le clavier de la carte de MTS-86C.

2. Le clavier de la carte MTS-86C Le clavier de la carte MTS-86C comporte 24 touches et il apparaît comme suit : Les touches de fonctions

Touches Description RESET La touche RESET vous permet d’initialiser la carte MTS-86C. Quand

la touche est pressée le 8086 envoie un message sur le LCD et le monitor est près.

NMI La touche NMI génère une interruption non masquable de type 2. + La touche + vous permet d’additionner 2 valeurs hexadécimale. - La touche – vous permet de substituer une valeur hexadécimale d’un

autre. : Cette touche vous permet de séparer une adresse entrée sur deux

parties ; la valeur de segment ou de l’offset. REG Cette touche vous permet d’utiliser les contenus des registres du 8086

comme une adresse ou une donnée en entrée. , Cette touche sépare les entrées saisies à partir des touches du clavier et

incrémente l’adresse mémoire à chaque entrée. . Lorsque cette touche est appuyée la commande courante est exécutée.

Notez que lorsque la touche GO est appuyée, le 8086 lance l’exécution à partir de l’adresse spécifiée quand la touche est pressée.

Touches de fonctions Touches Hexadécimales

RESET NMI C /IP

D /FL

E F

+ - 8 IW/CS

9 OW/DS

A /SS

B /ES

: REG 4 IB/SP

5 OB/BP

6 MV/SI

7 EW/DI

, . 0 EB/AX

1 ER/BX

2 GO/CX

3 ST/DX

Page 22: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Initiation à la programmation en langage machine

ISET Mahdia Informatique Industrielle 4ème niveau 17

Les touches hexadécimales

Touche Hexadicimale Commande RegistreAcronyme Nom Acronyme Nom

0 EB/AX EB Examine par Octet AX Examine par Octet1 ER/BX ER Examine le registre BX Base2 GO/CX GO Go CX Compteur3 ST/DX ST Un pas (STEP) DX Données4 IB/SP IB Entrée Octet SP Stacker Pointer5 OB/BP OB Sortie Octet BP Base Pointer6 MV/SI MV Move SI Source Index7 EW/DI EW Examine par Word DI Destination Index8 IW/CS IW Entrée Word CS Code Segment9 OW/DS OW Sortie Word DS Data SegmentA /SS non N/A SS Stack SegmentB /ES non N/A ES Extra SegmentC /IP non N/A IP Pointeur d'instructionD /FL non N/A FL FlagE non N/A non N/AF non N/A non N/A

3. Programmation en langage machine

3.1. Initiation Soit le programme en assembleur suivant : CODE SEGMENT ASSUME CS : CODE, DS : CODE MOV AX,1254H MOV BX,4567H MOV CX,AX MOV AX,BX MOV BX,CX HLT CODE ENDS END L’équivalent en hexadécimal de ce code est donné comme suit : B8 54 12 BB 67 45 8B C8 8B C3 8B D9 F4 L’édition de ce code hexadécimal est possible grâce au clavier de notre Kit MTS-86C.

L’insertion du programme à l’adresse 00H se fait en appuyant sur la séquence des boutons suivants : EB – 1 – 0 – 0 - : - 0 - , (le «-»c’est pour séparer les boutons)

Page 23: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Initiation à la programmation en langage machine

ISET Mahdia Informatique Industrielle 4ème niveau 18

Le programme doit être inséré en appuyant sur les boutons suivants : ; MOV AX,1254H B – 8 - , 5 – 4 - , 1 – 2 - , ; MOV BX,4567H B – B - , 6 – 7 - , 4 – 5 - , ; MOV CX,AX 8 – B - , C – 8 - , ; MOV AX,BX 8 – B - , C – 3 - , ; MOV BX,CX 8 – B - , D – 9 - , ;HLT F – 4 - .

Pour exécuter le programme pas à pas (mode STEP), il suffit d’appuyer sur la séquence des boutons suivants :

ST – 1 – 0 - 0 - : - 0 - , - .

On examine le contenu des registres AX, BX, CX, …en appuyant sur les touches suivantes : ER – AX - , - , - .

Pour passer à l’étape suivante il suffit d’appuyer une autre fois sur « , » suivi d’un « . ».

Que fait ce programme ? Enregistrer les résultats.

3.2. Programmation en langage machine

3.2.1. Programme 1 Soit le programme en assembleur suivant : MOV AL,11111111B SHL AL,1 SHR AL,1 MOV AL,10001000B

Page 24: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Initiation à la programmation en langage machine

ISET Mahdia Informatique Industrielle 4ème niveau 19

MOV CL,3 SAR AL,CL MOV AL,10000000B ROL AL,1 ROR AL,1 MOV AL,10000000B RCL AL,1 RCR AL,CL HLT

Dressez un organigramme expliquant le fonctionnement de ce programme. Emulez le programme et enregistrez les valeurs des registres AX et CX à chaque instruction. On vous donne l’équivalant en langage machine du programme ci-dessus :

Adresse Langage machine 0000 B0 FF 0002 D0 E0 0004 D0 E8 0006 B0 88 0008 B1 03 000A D2 F8 000C B0 80 000E D0 C0 0010 D0 C8 0012 B0 80 0014 D0 D0 0016 D2 D8 0018 F4

Insérez le programme ci-dessus depuis l’adresse 00H. Enregistrez les valeurs des registres AX et CX à chaque instruction. Exécutez le programme complet avec le bouton [GO] et vérifiez vos résultats.

3.2.2. Programme 2 Soit le programme écrit en langage machine suivant :

Adresse Langage machine 0000 B8 03 00 0003 48 0004 48 0005 48 0006 48 0007 48 0008 48 0009 F4

Insérez le programme à l’adresse 100H :0H. Enregistrez les valeurs du registre AX à chaque instruction. Que fait ce programme ? Donnez son équivalant en assembleur. Vérifiez vos résultats et conclure.

Page 25: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Programmation du 8255

Objectifs :

L’objectif de cette manipulation est de présenter à l’étudiant les principes de la

programmation de l’interface parallèle 8255. L’expérimentation porte sur un port parallèle

implémenté sur le Kit MTS-86C et qui est piloté par un 8255. Le rôle de l’étudiant est de

manipuler ce port en écrivant des codes en assembleur permettant de commander des diodes

ou recevoir des informations depuis des boutons poussoirs. Dans une deuxième étape

l’étudiant devra commander un moteur pas-à-pas via cette interface en utilisant une carte

d’extension connectée sur le port parallèle du Kit.

Matériels utilisés :

- Le Kit MTS-86C.

- Un PC ou compatible doté d’un port de communication série.

- Une carte d’extension fournie avec le Kit.

- Un moteur pas-à-pas ou une plaque d’essais avec 4 diodes.

Logiciels :

- Microsoft Windows

- Hyper Terminal

Durée :

1ère étape : 3H00mn

2ème étape : 1H30mn

Page 26: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8255

ISET Mahdia Informatique Industrielle 4ème niveau 21

Manipulation 3 : Programmation du 8255

1. But du TP Le but de cette manipulation est de se familiariser avec l’utilisation de l’interface de communication parallèle 8255 intégrée au système MTS-86C.

2. Présentation Les échanges entre le microprocesseur et son environnement externe (clavier, écran, imprimante,…) se font à l’aide de circuits d’interface appelés souvent « coupleurs d’Entrées/Sortie ». Ces échanges peuvent être effectués en parallèle ou en série. Dans le cadre de cette manipulation, nous allons utilisé un coupleur pour liaison parallèle de la famille 8200 de Intel : il s’agit du PPI (Programmable Peripheral Interface) 8255.

3. Le PPI 8255 Le Intel 8255 est une interface programmable d’entrée/sortie destiné à l’utilisation avec les microprocesseurs Intel. Elle possède 24 pins d’entrées/sorties programmable par deux groupes de 12 pins chacun et elle peut être utilisée en 3 modes. Dans le premier mode (MODE 0), chaque groupe de 12 pins peut être programmé par lot de 4 broches en entrée ou en sortie. Dans le (MODE 1), le deuxième mode, chaque groupe peut être programmé de sorte que 8 lignes soient configurées en entrées ou en sorties. Le troisième mode, (MODE 2), est un mode bidirectionnel où 8 lignes sont utilisées comme bus bidirectionnel.

3.1. Fonctions des broches Data Bus Buffer Ce bus bidirectionnel à 3 états est utilisé pour interfacer le 8255 au bus du système. Les données sont transmises et reçues via le buffer suivant l’instruction de input ou de output générée par le microprocesseur. Le Control Word et les informations de configuration sont aussi transmis via ce bus. Read/Write et Control logic La fonction de ce bloc est de gérer tous les transferts, internes et externes, des données, de contrôle ou du Status Words.

__CS Cette broche, active à l’état bas, permet la communication entre le 8255 et le CPU.

__

RD Cette broche, active à l’état bas, permet au 8255 de transférer les données ou les informations de configurations au CPU via le data bus.

__

WR Cette broche, active à l’état bas, permet au microprocesseur d’envoyer des données ou le Control Words vers le 8255.

Page 27: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8255

ISET Mahdia Informatique Industrielle 4ème niveau 22

10 AetA

Ces broches d’entrées, conjuguées aux broches WR et RD, contrôlent la sélection des ports (A, B ou C) ou du registre du Control Word.

A1 A0 __

RD __

WR __

CS Opérations d’Input (Lire)

0 0 0 1 0 Port A->Data Bus 0 1 0 1 0 Port B->Data Bus 1 0 0 1 0 Port C->Data Bus Opérations d’Output (Ecrire)

0 0 1 0 0 Data Bus -> Port A 0 1 1 0 0 Data Bus -> Port B 1 0 1 0 0 Data Bus -> Port C 1 1 1 0 0 Data Bus -> Control Fonctions de désactivation

x x x x 1 Data Bus -> 3 états 1 1 0 1 0 Condition illégale x x 1 1 0 Data Bus -> 3 états

3.2. Le contrôle des groupes Le CPU envoie un Control Word vers le 8255 pour configurer les ports. Le Control Word contient des informations comme : le mode, le bit set, le bit reset, etc.… Chaque bloc de contrôle (Groupe A et Groupe B) accepte les commandes depuis le Read/Write Control logic, et reçoit le Control Word depuis le bus interne des données et envoie les commandes au port qui lui est associé. Le Groupe A de Contrôle --- Port A et Port C (de poids fort) [C7-C4]. Le Groupe B de Contrôle --- Port B et Port C (de poids faible) [C3-C0].

3.3. La sélection des modes Il existe 3 modes d’utilisation de l’interface 8255 : Le Mode 0, le Mode 1 et le Mode 2. Quand l’entrée RESET est à l’état haut, tous les ports sont configurés en entrée. Si l’entrée RESET est désactivée, l’interface 8255 garde son état (en entrée) sans aucune initialisation préalable. Les modes des ports A et B peuvent être configurés séparément. Cependant le port C est divisé en deux groupes configurés suivants les besoins des ports A et B. (voir annexe)

4. Manipulation Le système MTS-86C dispose de 3 interfaces parallèles programmable 8255. L’interface n°3 (PPI-3) est utilisée pour l’expérimentation et elle est connectée aux diodes et aux boutons SW suivant les schémas électroniques disponible en annexe. D’après ces schémas, le port A est donc connecté aux boutons SW et le port B est connecté aux diodes via les circuits 74LS240.

4.1. Exemple de programmation Supposons que l’on veut écrire un programme en assembleur qui nous permet d’allumer la diode LED en appuyant sur le bouton SW correspondant. Le programme s’écrit alors comme suit :

Page 28: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8255

ISET Mahdia Informatique Industrielle 4ème niveau 23

CNT3 EQU 3FD6H; Assignation des adresses des ports APORT3 EQU 3FD0H BPORT3 EQU 3FD2H CODE SEGMENT ASSUMECS:CODE,DS:CODE ORG 0 START : MOV SP,4000H ; Configuration du Stack Pointer MOV AL,90H ; Configuration du Control Word du 8255 ;(Port A=Input, Port B et C=Output) MOV DX,CNT3 ;Configuration du port de sortie OUT DX,AL ; Ecriture du Control Word J1: MOV DX,APORT3 ; Configuration du port d’entrée IN AL,DX ; Faire entrer les données NOT AL ; Inverser le signal MOV DX,BPORT3 ; Configuration du port de sortie OUT DX,AL ; Faire sortir les données JMP J1 ; Reboucler vers J1 CODE ENDS END START

Tester le bon fonctionnement du programme précédant sur la carte MTS-86C.

4.2. Programmation de l’interface 8255

Ecrire un programme permettant d’allumer toutes les LEDS. Ecrire un programme permettant d’afficher le nombre hexadécimal 95 sur les 8 LEDS. Ecrire un programme permettant d’alterner l’allumage des diodes de droite à gauche en continu (On

allume les 4 diodes de droite puis de gauche et on reprend). Modifier le programme précédent pour réaliser l’alternance 10 fois seulement. Soit à réaliser un chenillard sur le port B de la PPI 8255. Le principe est le suivant :

Etape1 0 0 0 0 0 0 0 0 Etape2 1 0 0 0 0 0 0 0 Etape3 0 1 0 0 0 0 0 0 Etape4 0 0 1 0 0 0 0 0 Etape5 0 0 0 1 0 0 0 0 Etape6 0 0 0 0 1 0 0 0 Etape7 0 0 0 0 0 1 0 0 Etape8 0 0 0 0 0 0 1 0 Etape9 0 0 0 0 0 0 0 1 Le 1 représente une LED éteinte et le 0 une LED allumé. Ecrire ce programme en utilisant l’instruction de décalage adéquate. Conclure.

Modifier le programme précédent pour n’exécuter ce défilement que 3 fois. Rédiger une conclusion générale à propos de cette manipulation.

Page 29: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8255

ISET Mahdia Informatique Industrielle 4ème niveau 24

5. Annexe

Format du Control Word en MODE 0

Format du Control Word en MODE 1

Page 30: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8255

ISET Mahdia Informatique Industrielle 4ème niveau 25

Format du Control Word en MODE 2

Page 31: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Programmation du 8251

Objectifs :

L’objectif de cette manipulation est de présenter à l’étudiant les principes de la

programmation de l’interface série 8251. L’expérimentation porte le port série implémenté sur

le Kit MTS-86C qui est piloté par un 8251. Le rôle de l’étudiant est de manipuler ce port en

écrivant des codes en assembleur permettant d’envoyer ou de recevoir des caractères entre le

Kit et le PC.

Matériels utilisés :

- Le Kit MTS-86C.

- Un PC ou compatible doté d’un port de communication série.

Logiciels :

- Microsoft Windows

- Hyper Terminal

Durée :

3H00mn

Page 32: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 27

Manipulation 4 : Programmation du 8251

1. But du TP Cette manipulation est une initiation à l’utilisation d’une interface de communication série programmable type 8251.

2. Présentation Dans le cadre de cette manipulation, nous allons utilisé un coupleur pour liaison série de la famille 8200 de Intel : il s’agit du USART (Universal Synchronous/Asynchronous Receiver/Transmitter) 8251.

3. Le 8251 Le Intel 8251 est une interface programmable d’entrée/sortie destinée à l’utilisation avec les microprocesseurs Intel. Le 8251 est une interface programmable par le CPU et utilise toutes les techniques de transmissions séries déjà développées (y compris le standard IBM « bi-sync »). Le 8251 accepte les données du CPU en format parallèle et les convertis en format série prête à l’émission. En même temps, l’interface peut convertir les données reçues sous format séries en données en format parallèle pour la transmission vers le CPU. Le USART fait signe au microprocesseur quand il reçoit un caractère à transmettre ou en cas où il va envoyer un caractère vers le CPU. Le processeur peut savoir le statut de l’interface à n’importe quel moment. Ceci inclut les signaux de contrôle comme SYNDET, TxEMPTY, etc.…

3.1. Fonctions des broches Data Bus Buffer Ce bus bidirectionnel à 3 états est utilisé pour interfacer le 8251 au bus du système. Les données sont transmises et reçues via le buffer suivant l’instruction de input ou de output générée par le microprocesseur. Le Control Word, le Command Word et les informations de configuration sont aussi transmis via ce bus. Les Command Status, Data-In et Data-Out communiquent aussi avec le bus système via le Data Bus Buffer. Read/Write et Control logic Ce bloc accepte les entrées depuis le contrôleur du bus système et génère les signaux de contrôle vers tous les blocs opérationnels. Il contient les registres du Control Word et Command Word qui définissent la configuration de l’interface. RESET Cette broche, active à l’état haut, force le 8251 en mode « idle ». L’interface garde son état « idle » jusqu’à une nouvelle configuration définie par le Control Word. CLK L’entrée CLK est utilisée pour générer un Timer interne et elle doit être connectée à la phase 2 (TTL) du temporisateur. La fréquence de CLK doit être 30 fois supérieur que le débit de transmission ou de réception.

__

WR Cette broche, active à l’état bas, permet au microprocesseur d’envoyer des données ou le Control Words vers le 8251.

__

RD Cette broche, active à l’état bas, permet au microprocesseur de lire les données ou les informations de configurations du 8251.

__CS Cette broche, active à l’état bas, permet la communication entre le 8255 et le CPU.

Page 33: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 28

__

/ DC Ces broches d’entrées, conjuguées aux broches WR et RD, informent le 8251 sur le type du mot existant sur le Bus de données (Données, Control Word, informations de statut). Modem control Le 8251 dispose d’un ensemble d’entrées/sorties capable de faciliter l’interfaçage avec n’importe quel modem. ______

DSR Cette entrée de 1 bit est utilisée pour tester les conditions sur le modem. ______

DTR Cette entrée de 1 bit est utilisée aussi pour le contrôle du modem. ______

RTS Comme la branche précédente, cette broche est utilisée pour le contrôle du modem et elle peut être programmée par le Command Instruction Word.

L’interface Série 8251

__

/ DC __

RD __

WR __

CS

0 0 1 0 8251 Data->Data Bus 0 1 0 0 Data Bus->8251 Data 1 0 1 0 STATUS->Data Bus 1 1 0 0 Data Bus->CONTROL x 1 1 0 Data Bus -> 3-states x x x 1 Data Bus -> 3-states

Page 34: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 29

______

CTS Cette broche, active à l’état bas, permet la transmission des données en série si le bit TxEnable du Control Word est affecté à 1. Transmitter Buffer Le Transmitter Buffer accepte des données parallèles à partir du Data Bus Buffer, et les convertis en données séries et insère le bit approprié (suivant la technique de communication) et transmet en format série par le pin

TxD. La transmission commence si ______

CTS =0. Transmitter Control Ce bloc gère les opérations associées à la transmission des données séries. TxRDY Cette broche en sortie signal au microprocesseur que le Transmitter est prêt à la réception des données. Ce pin peut être utilisé comme interruption pour le système. TxE Si le 8251 n’a aucune donnée à émettre alors le TxE est à l’état haut. Ce pin peut être aussi utilisé pour signaler la fin des transmissions. ______

TxC Cette broche indique le débit à lequel les données vont être émises. En mode synchrone, le débit est égal à la fréquence de TxC. En mode asynchrone, le débit est une fraction de la fréquence du TxC. Receiver Buffer Ce bloc accepte les données séries et les convertis en format parallèle en insérant le bit approprié suivant la technique utilisé. Receiver Control Ce bloc gère toutes les opérations reliées à la réception des données. RxRDY Cette sortie indique que le 8251 contient des données et que l’interface est prête à les émettre au CPU. Ce pin peut être utilisé comme interruption dans le système. ______

RxC Le Receiver Clock contrôle le débit avec lequel les données sont reçues. En mode synchrone le débit de réception est égal à la fréquence indiquée par le RxC. En mode asynchrone, le débit est une fraction de cette fréquence.

3.2. Programmation du 8251 Avant d’effectuer les opérations de réception et de transmission, le 8251 doit être configuré par le mot de contrôle (Control Word) généré par le CPU. Le Control Word peut être définie suivant deux formats :

Instruction de mode (Mode Instruction) ; Instruction de commande (Command Instruction).

3.2.1. L’instruction de mode (Mode Instruction) Cette instruction définit les caractéristiques opérationnelles générales du 8251. Elle doit être définie après un RESET et suivie d’une Instruction de commande ou d’une caractère SYNC.

3.2.1.1. Définition de l’instruction de mode Le 8251 peut être utilisé soit en mode synchrone soit en mode asynchrone. Pour connaître comment le Mode Instruction définit les opérations fonctionnelles du 8251, le constructeur aperçoit le composant comme étant

Page 35: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 30

deux sous-systèmes séparés partageant le même package. La définition du format peut être changée seulement après un RESET.

3.2.1.1.1 Mode asynchrone

Format de l’instruction de mode en mode asynchrone

Mode asynchrone

Page 36: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 31

3.2.1.1.2 Mode synchrone

Format du Mode Instruction en mode synchrone

Format des données en mode synchrone

Page 37: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 32

3.2.2. L’instruction de commande (Command Instruction) Cette instruction définit un mot qui contrôle les opérations du 8251. Les instructions de Mode et de Commande doivent se confirmer aux séquences des opérations indiquées par la figure ci-dessous.

Séquence des opérations

Format du Command Instruction

Page 38: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 33

3.2.3. Définition du mot d’état (Status Read) Dans les systèmes de communication il est nécessaire d’examiner le statut des périphériques actifs pour contrôler les erreurs éventuelles. Le 8251 facilite la tâche au programmeur en lui permettant de « lire » le statut de la communication en tout moment durant le fonctionnement de l’interface.

Format du Status Read

3.3. Application du 8251

Connexion du 8251 en mode asynchrone

Page 39: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 34

Connexion du 8251 en mode synchrone

4. Manipulation

Depuis la console Hyper Terminal transférer le programme suivant vers le système MTS-86C : D_PORT EQU 0FFF0H CS_PORT EQU 0FFF2H CODE SEGMENT ASSUME CS:CODE ORG 0 MOV AL,40H ; Mise à zéro du 8251 MOV DX,CS_PORT ; Initialisation du port en sortie OUT DX,AL ; Sortie OUT DX,AL OUT DX,AL XOR AL,AL OUT DX,AL MOV AL,40H ;RESET OUT DX,AL ;Sortie MOV AL,4EH ; Setup Mode Byte OUT DX,AL MOV AL,27H ; Setup Comment OUT DX,AL J1: CALL IN_RS ; Recevoir 1 caractère CALL OUT_RS ; Emettre 1 caractère JMP J1 IN_RS: MOV DX,CS_PORT; IN AL,DX ; AND AL,2; JZ IN_RS ; MOV DX,D_PORT; IN AL,DX ; MOV AH,AL ;

Page 40: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8251

ISET Mahdia Informatique Industrielle 4ème niveau 35

RET ; OUT_RS: MOV DX,CS_PORT IN AL,DX AND AL,1 ; JZ OUT_RS MOV DX,D_PORT ; MOV AL,AH OUT DX,AL RET CODE ENDS END

Le programme précédant nous permet d’envoyer et de recevoir un caractère via le 8251. Exécuter le programme. Que se passe-t-il ? Pourquoi ?

Identifier la valeur de l’instruction de commande. Quel est l’état du port (émission ou réception) ? Identifier la valeur de l’instruction de mode. Déduire alors le mode de communication, la longueur du

caractère, la parité (activée ou non activée), le bit de parité et le facteur de débit. Commenter les routines IN_RS et OUT_RS et expliquer l’utilité des instructions AND AL,2 dans

IN_RS et AND AL,1 dans OUT_RS Développer un programme en assembleur qui nous permet de saisir un caractère à partir du clavier du

PC et de l’afficher à l’écran du PC (l’écran du terminal) via le 8251 de la carte MTS-86C.

Page 41: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Programmation du 8259

Objectifs :

L’objectif de cette manipulation est de présenter à l’étudiant les principes de la

programmation du contrôleur d’interruptions 8259. Dans une première étape, on rappelle la

notion de l’interruption et le principe de la prise en compte de l’interruption supporté par le

8086. Dans une deuxième étape, on présentera l’architecture du 8259 et ses différents

registres. L’expérimentation portera sur l’utilisation du 8259 implémenté sur le Kit pour tester

l’utilisation de deux types d’interruptions : une interruption non masquable, commandée par

le bouton NMI du clavier du Kit, et une interruption masquable commandée par un bouton

poussoir connecté au 8255.

Matériels utilisés :

- Le Kit MTS-86C.

- Un PC ou compatible doté d’un port de communication série.

Logiciels :

- Microsoft Windows

- Hyper Terminal

Durée :

3H00mn

Page 42: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8259

ISET Mahdia Informatique Industrielle 4ème niveau 37

Manipulation 5 : Programmation du 8259

1. But du TP Cette manipulation est une initiation à la programmation d’un contrôleur d’interruptions programmable type 8259.

2. Les Interruptions En général l’Unité de traitement exécute séquentiellement les instructions ou effectue des sauts programmes (JMP, CALL). Mais il existe des situations où l’Unité de Traitement est déroutée de sa tâche : Reset : signal envoyé au microprocesseur pour un redémarrage. Exceptions (interruptions internes) : débordement de pile, dépassement de capacité, division par 0, etc.… Appels systèmes (interruptions logicielles) : appel du programme lui-même « int 21h ». Interruptions physiques (interruptions externes) : appels d’autres périphériques. Les interruptions sont plus ou moins prioritaires ; dans le cas d’une interruption non masquable l’Unité de Traitement est obligée de s’en occuper (RESET,…) et dans le cas d’une interruption masquable l’Unité de traitement peut ne pas en tenir compte est ceci grâce au drapeau IF. Chaque interruption possède un numéro de 0 à 255 (FFh) (ex : Int 21h). Lorsqu’une interruption est déclanchée, l’U.T doit exécuter un bout de programme bien précis : le traitant de l’interruption. En effet, l’Unité de Traitement doit savoir où se trouve l’adresse (CS : IP) du traitant numéro ‘n’. Cette information est stockée en mémoire (0000 :0000 à 0000 : 03FFh).

Au démarrage, la table des interruptions contient des valeurs par défaut. Cependant, il est possible de modifier cette table soit pour ajouter/supprimer un traitant, soit pour surcharger un traitant (ex : ajouter un message d’erreur en plus du div/0).

3. Le 8259 Lorsqu'une demande d'interruption (IRQ) est détectée par le contrôleur maître, si l'interruption est validée, il génère un signal INT de demande d'interruption vers le microprocesseur.

Page 43: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8259

ISET Mahdia Informatique Industrielle 4ème niveau 38

Si l'interruption est autorisée par le processeur, celui-ci exécute deux cycles INTA : - le premier pour signaler que la demande est honorée, - le second pour demander au contrôleur d'interruptions de déposer son vecteur d'interruption sur le bus de données ; ce vecteur (de 0 à 255), multiplie par quatre, pointe l'emplacement en mémoire de l'adresse du programme de gestion de l'interruption ; le microprocesseur se branche automatiquement a cette adresse après avoir effectue une séquence de sauvegarde des registres.

4. Registres et programmation du 8259 La programmation de ce circuit comprend deux types de commandes : - Les commandes d'initialisation effectuées par une séquence dans l'ordre ICW1, ICW2, ICW3, ICW4 - Les commandes d'opérations générées a tout moment après les commandes d'initialisation : OCW1, OCW2, OCW3. Apres un reset, le contrôleur est dans l'état suivant : - la détection des interruptions est remise a zéro, - le masque d'interruption est efface, - la priorité la plus basse est IRQ7, - l'adresse du mode esclave est mise à 7, - le mode de masque spécial est efface.

4.1. ICW1 : registre mode de fonctionnement |---------------------------------------| | ICW1 | |----|----|----|----|----|----|----|----| | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |----|----|----|----|----|----|----|----| | X | X | X | 1 |LTIM| 1 |SNGL| 1 | |----|----|----|----|----|----|----|----| | 1 | | 0 | |----| |----| b4 : à 1 indique que c'est le registre ICW1 qui est adresse. LITM : (Level Input Triggered Mode) détection des interruptions sur : - 0 : un front montant. - 1 : un niveau SNGL : (SiNGLe) - 1 : un seul 8259 ; pas de programmation de ICW3 à l'initialisation. - 0 : plusieurs 8259 en cascade ; dans ce cas, l'initialisation prévoit de préciser le mode de mise en cascade avec le mot ICW3.

4.2. ICW2 : registre vecteur d'interruption |---------------------------------------| | ICW2 | |----|----|----|----|----|----|----|----| | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |----|----|----|----|----|----|----|----| | T7 | T6 | T5 | T4 | T3 | X | X | X | |----|----|----|----|----|----|----|----| | 0 | 0 | 0 | 0 | 1 | X | X | X |maître |----|----|----|----|----|----|----|----| | 0 | 1 | 1 | 1 | 0 | X | X | X |esclave

Page 44: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8259

ISET Mahdia Informatique Industrielle 4ème niveau 39

T7 à T3 : constituent la partie haute du vecteur d'interruption tandis que les trois bits de poids faibles (T2 à T0) sont ajoutes automatiquement suivant le numéro d'ordre de l'interruption qui a provoque l'interruption. Pour le maître, les vecteurs d'interruption vont de INT08H à INT0FH (pointent les adresses de 000020H à 00003FH). Pour l'esclave, les vecteurs d'interruption vont de INT70H à INT77H (pointent les adresses de 0001C0H à 0001DFH).

4.3. ICW3 : registre configuration en cascade |---------------------------------------| | ICW3 | |----|----|----|----|----|----|----|----| | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |----|----|----|----|----|----|----|----|- | S7 | S6 | S5 | S4 | S3 | S2 | S1 | S0 | | |----|----|----|----|----|----|----|----| -- maître | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | | |----|----|----|----|----|----|----|----|- | 0 | 0 | 0 | 0 | 0 | ID2| ID1| ID0| | |----|----|----|----|----|----|----|----| -- esclave | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | | |----|----|----|----|----|----|----|----|- Ce mot est interprété par le 8259 de deux façons différentes suivant qu'il s'agit d'un maître ou d'un esclave. Cette reconnaissance se fait par la broche SP/EN du boîtier qui est a l'état haut pour le maître et a l'état bas pour l'esclave (ici le mode sans buffer est utilise, voir bit BUF de ICW4). S7 à S0 : à 1, chaque bit indique qu'un 8259 est branche sur la broche IRQ correspondante. ID2 à ID0 : numéro de l'interruption cascade = numéro identificateur de l'esclave. L'esclave sera active lorsqu'il reconnaîtra ce numéro sur les trois lignes de mise en cascade CAS0 à CAS2 ; il placera alors le vecteur d'interruption sur le bus de données.

4.4. ICW4 : registre fin d'interruption |---------------------------------------| | ICW4 | |----|----|----|----|----|----|----|----| | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |----|----|----|----|----|----|----|----| | 0 | 0 | 0 |SFNM| BUF| M/S|AEOI| 1 | |----|----|----|----|----|----|----|----| | 1 | 0 | X | 1 | |----|----|----|----| SFNM : (Special Fully Nested Mode) - 0 : mode normal d'imbrication des interruptions. Le bit correspondant du registre des interruptions en service ISR est mis à 1 et reste dans cet état jusqu'a ce qu'une fin d'interruption survienne ou, si la fin d'interruption automatique est programmée, jusqu'au dernier front montant du signal INTA. - 1 : ce bit autorise le mode spécial d'imbrication des interruptions ; dans ce mode, un esclave qui a déjà une interruption en service pourra en faire prendre en compte d'autres par le maître, si elles sont de plus forte priorité (dans le mode normal, le maître les ignore jusqu'a la commande EOI). BUF : (BUFfer) - 0 : sans buffer

Page 45: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8259

ISET Mahdia Informatique Industrielle 4ème niveau 40

- 1 : avec buffer ; dans ce cas la broche SP/EN est utilisée en sortie pour commander un buffer bidirectionnel externe. M/S : (Master/Slave) en mode buffer, ce bit indique: - 0 : le circuit esclave - 1 : le circuit maitre. AEOI : (Automatique End Of Interrupt) - 1 : mode automatique de fin d'interruption, le bit concerne d'ISR est remis à 0 des la fin du deuxième INTA. - 0 : un mot de commande spécifique doit être envoyé avant le retour de la procédure d'interruption.

4.5. OCW1 : registre masque des interruptions (lecture/écriture) Il contient le masque individuel des interruptions. |---------------------------------------| | OCW1 | |----|----|----|----|----|----|----|----| | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |----|----|----|----|----|----|----|----| | M7 | M6 | M5 | M4 | M3 | M2 | M1 | M0 | |----|----|----|----|----|----|----|----| Un bit à 1 correspond a inhiber l'interruption portant le même numéro d'ordre ; un 0 correspond a l'autoriser.

4.6. OCW2 : registre priorité des interruptions Il détermine le niveau de priorité des interruptions présentes dans le registre IRR. |---------------------------------------| | OCW2 | |----|----|----|----|----|----|----|----| | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |----|----|----|----|----|----|----|----| | R | SL | EOI| 0 | 0 | L2 | L1 | L0 | |----|----|----|----|----|----|----|----| | | | |----|----|------|-------| | | | | OCW2 No de l'interruption | | | | concernée (0 à 7) | | | | | | | | | |----------------------| | | | | | |----|----|----| | | 0 | 1 | 1 |Fin d'interruption No | | |----|----|----| | | | 1 | 1 | 1 |Rotation a chaque int.No |-----| |----|----|----| | | 1 | 1 | 0 |La priorité la plus élevée est No| |----|----|----| | 0 | 0 | 1 |Fin d'interruption |----|----|----| | 1 | 0 | 1 |Rotation des priorités a chaque EOI non spécifique |----|----|----| | 1 | 0 | 0 |Rotation des priorités a chaque EOI |----|----|----| | 0 | 0 | 0 |Arrêt de rotation automatique |----|----|----| | 0 | 1 | 0 |Pas d'opération |----|----|----|

Page 46: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8259

ISET Mahdia Informatique Industrielle 4ème niveau 41

4.7. OCW3 : registre gestion des interruptions |---------------------------------------| | OCW3 | |----|----|----|----|----|----|----|----| | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |----|----|----|----|----|----|----|----| | 0 |ESMM| SMM| 0 | 1 | P | RR | RIS| |----|----|----|----|----|----|----|----| ESMM : (Enable Special Mask Mode) a 1, ce bit autorise SMM, sinon le bit SMM est ignore. SMM : (Special Mask Mode) - 1 : mode spécial sélectionné, - 0 : mode spécial arrêté. Le mode spécial de masquage permet de résoudre des problèmes d'occupation abusive du CPU par une routine d'interruption ; en effet, lorsque l'une d'elle demande un temps d'exécution important, elle bloque toutes celles qui ont une priorité plus faible. Il n'est pas toujours possible de placer ces routines longues en faible priorité car il peut être nécessaire d'exécuter une tache importante au début de la procédure d'interruption. Par contre, une fois cette tache accomplie, il est possible d'accepter les priorités plus faibles avant la fin de la procédure. Pour cela, il faut exécuter la séquence d'opération suivante : - masquer uniquement le bit correspondant à la routine en cours. - mettre le 8259 en mode spécial de masquage a l'aide de OCW3. - autoriser les interruptions : toutes les interruptions sont alors autorisées sans tenir compte de leur priorité plus faible. Avant de sortir de la routine, il faut exécuter une séquence inverse : - bloquer le mode spécial de masquage. - rétablir un masquage normal. RR : (Read Register = lecture registre) autorise la lecture des registres IRR ou ISR si ce bit est à 1. Le choix de ce registre est déterminé par RIS. Lorsque, ensuite, le microprocesseur fait une lecture (A0=0), celui-ci lira le contenu de ISR ou IRR sur le bus de données. RIS : (Read In Service = lecture en service) - 1 : registre ISR - 0 : registre IRR P : (Poll command = commande de scrutation) - 0 : mode normal - 1 : le signal INT est inhibe ; chaque lecture du microprocesseur est considérée comme une reconnaissance d'interruption ; durant cette lecture le 8259 met sur le bus le mot suivant : |--|--|--|--|--|--|--|--| |b7|b6|b5|b4|b3|b2|b1|b0| |--|--|--|--|--|--|--|--| | I| X| X| X| X|W2|W1|W0| |--|--|--|--|--|--|--|--| W2 a W0 : est le numéro de la demande d'interruption de plus haute priorité. I : est à 1 lorsqu'une interruption a été demandée.

4.8. IRR : (Interrupt Request Register = registre demande d'interruption)

Ce registre 8 bits mémorise les demandes suivant leur numéro d'interruption IRQ ; chaque bit est actif (demande d'interruption) à l'état 1.

Page 47: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8259

ISET Mahdia Informatique Industrielle 4ème niveau 42

4.9. ISR : (In Service Register = registre interruption en service) Registre de 8 bits. Le bit d'IRR de plus haute priorité est inscrit dans ISR tandis qu'il est remis à 0 dans IRR. Dans le mode automatique, le bit de ISR est remis à zéro des que le vecteur d'interruption a été lu (voir bit AEOI de ICW4) : la demande d'interruption est considérée comme servie ; dans le cas contraire, un mot de commande est nécessaire pour effacer le bit concerne.

5. Signaux des entrées sorties du 8259 |-----| |------| CS*|1 |-| 28|VCC WR*|2 8259 27|A0 RD*|3 26|INTA* D7|4 25|IRQ7 D6|5 24|IRQ6 D5|6 23|IRQ5 D4|7 22|IRQ4 D3|8 21|IRQ3 D2|9 20|IRQ2 D1|10 19|IRQ1 D0|11 18|IRQ0 CAS0|12 17|INT CAS1|13 16|SP*/EN* GND|14 15|CAS2 |--------------|

Brochage du 8259 D0 a D7 : Bus de données bidirectionnel 8 bits. RD* : Entrée commande de lecture. WR* : Entrée commande d'écriture. A0 : Entrée sélection adresse interne. CS* : Entrée sélection du circuit (décodage d'adresse). CAS0 à CAS2 : Lignes de mise en cascade des 8259 pour arbitrage. SP*/EN* : (Slave Program/Enable) entrée activation de l'esclave ou sortie de contrôle du buffer bus de données. IRQ0 à IRQ7 : Entrées des signaux de demande d'interruption. INT : Sortie du signal de demande d'interruption vers le microprocesseur ou un 8259 maître. INTA* : Entrée du signal d'acquittement générée par le microprocesseur.

6. Manipulation Le système MTS-86C possède un seul contrôleur d’interruptions 8259. Le bouton SW11 est connecté au 8259 via son entrée IRQ0 et le TIMER 8253 est connecté au contrôleur via l’IRQ1. Cette configuration est expliquée par les schémas électroniques en annexe.

Page 48: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8259

ISET Mahdia Informatique Industrielle 4ème niveau 43

6.1. Exemple de programmation CSR EQU 0FFC8H PORT EQU 0FFCAH CODE SEGMENT ASSUME CS:CODE,DS:CODE START: CLI MOV SP,4000H MOV AX,CS MOV DS,AX MOV AX,0 MOV ES,AX MOV BX,2*4 MOV ES:WORD PTR[BX],OFFSET NMI MOV ES:2[BX],CS MOV BX,40H*4 MOV ES:WORD PTR[BX],OFFSET INTR0 MOV ES:2[BX],CS MOV DX,CSR ;A0=0 MOV AL,00010011B ;ICW1 OUT DX,AL MOV DX,PORT ;A0=1 MOV AL,40H ;ICW2 OUT DX,AL MOV AL,00000101B ;ICW4 OUT DX,AL MOV AL,11111110B OUT DX,AL ;================================================ MOV DX,OFFSET MSG1 MOV AH,9 INT 21H STI HERE: JMP $ NMI: MOV DX,OFFSET MSG2 MOV AH,9 INT 21H IRET INTR0: MOV DX,OFFSET MSG MOV AH,8 INT 21H MOV DX,CSR MOV AL,20H OUT DX,AL IRET

Page 49: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8259

ISET Mahdia Informatique Industrielle 4ème niveau 44

MSG DB 0DH,0AH,9,9,'MTS-86C INTERRUPT0 TEST !!$' MSG1 DB 0DH,0AH,9,9,'INTERRUPT TEST PROGRAM...',0DH,0AH,'$' MSG2 DB 0DH,0AH,9,9,'MTS-86C NMI TEST !!....$' CODE ENDS END START

Compiler le programme ci-dessus et transférez-le vers la carte MTS-86C. Que fait ce programme ? Vérifier vos résultats en l’exécutant. Commentez la routine principale START en précisant les rôles des instructions suivantes :

“MOV ES:WORD PTR[BX],OFFSET NMI MOVES:2[BX],CS“ ET “MOV ES:WORD PTR[BX],OFFSET INTR0 MOV ES:2[BX],CS“

6.2. Programmation du 8259

On veut développer un programme en assembleur qui nous permet d’allumer successivement la diode L1 puis L2 puis L3,...., jusqu’à L8 en appuyant seulement sur le bouton SW11 qui correspond à l’interruption 0.

Page 50: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Programmation du 8253

Objectifs :

L’objectif de cette manipulation est de présenter à l’étudiant les principes de la

programmation du Timer 8253/54. Dans une première étape, exposera l’architecture et les

registres du 8253. Dans une deuxième étape, on présentera les différents modes de

fonctionnement du 8253 et le principe de programmation. L’expérimentation portera sur

l’utilisation du 8253 implémenté sur le Kit associé au contrôleur d’interruptions 8259 et de

l’interface parallèle 8255.

Matériels utilisés :

- Le Kit MTS-86C.

- Un PC ou compatible doté d’un port de communication série.

Logiciels :

- Microsoft Windows

- Hyper Terminal

Durée :

3H00mn

Page 51: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 46

Manipulation 6 : Programmation du 8253

1. But du TP Cette manipulation est une initiation à la programmation d’un compteur programmable type 8253-54. L’Intel 8253 est compteur/timer programmable désigné pour être utilisé avec un microprocesseur Intel x86. Le 8253 comporte 3 compteurs indépendants 16-bits, chacun de ces compteurs peut fonctionner à une fréquence de 2.6 Mhz. Tous les modes de fonctionnement sont programmables.

2. Le 8253

Structure interne du 8253

Page 52: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 47

Data Bus Buffer: Le bus 3 états, bidirectionnel, 8-bits buffer est utilisé pour interfacer le 8253. Les données sont transmises via ce bus entre le 8253 et le CPU. Ce bloc a 3 fonctionnalités principales :

- Programmer les modes du 8253. - Charger le registre compteur. - Lire la valeur du compteur.

Read/Write logic : Ce bloc accepte les signaux depuis le système et génère les signaux pour le contrôle des opérations du 8253.

__RD : Un niveau bas sur ce pin permet au CPU la lecture des valeurs des compteurs.

__WR : Un niveau bas sur ce pin permet au CPU d’envoyer les modes ou les valeurs initiales des compteurs. A0, A1 : Ces broches sont connectées au bus d’adresse et elles servent à sélectionner le compteur et le mode voulu.

__CS : Ce pin à l’état bas active le fonctionnement du 8253.

Control Word Register : Le Control Word Register est sélectionné quand A0 et A1 sont à ‘1’. Les informations stockées dans ce registre contrôlent les opérations de mode de chaque compteur ainsi que le type de comptage et le chargement des registres compteurs. Counter #0, Counter #1 et Counter #2: Ces blocs ont des fonctionnalités similaires donc on va s’intéresser à la description d’un seul bloc.

Page 53: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 48

En effet, chaque compteur est un compteur 16-bits à pré chargement. Le compteur peut fonctionner en mode BCD ou binaire et ses Entrées (Gates et Output) sont configurées par la sélection des modes enregistrés dans le Control Word Register.

3. Programmation du 8253 Tous les modes pour chaque compteur sont programmés par le mot de contrôle stocké dans le Control Word Register.

3.1. Format du mot de contrôle

3.1.1. Définitions des bits

3.1.1.1. Les bits SC

3.1.1.2. Les bits RL

Page 54: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 49

3.1.1.3. Les bits M

3.1.1.4. Le bit BCD

3.1.2. Les modes

3.1.2.1. Mode 0 : Envoi d’une demande d’interruption en fin de décomptage GATE = 1: valide le comptage (décomptage) GATE = 0 : le suspend mais n’a aucun effet sur la sortie OUT. Après chargement de la valeur à décompter et temporisation d’une impulsion d’horloge, le décomptage commence. La sortie est au niveau bas. Lorsque le décomptage atteint 0, la sortie passe au niveau 1. Ce qui se traduit par l’émission d’une demande d’interruption. Elle reste à 1 jusqu’au changement d’un nouveau mode ou d’une nouvelle valeur. Le décomptage se poursuit.

3.1.2.2. Mode 1 : Re-déclenchement par une impulsion extérieure En position d’attente, la sortie est au niveau haut. Un front montant sur la gâchette GATE déclenche le décompte au top d’horloge qui suit. Alors la sortie passe à 0 et s’y maintient jusqu’à ce que le décompte arrive à 0. Chaque front montant sur GATE relance le processus à partir du compte initial (si celui-ci n’a pas été modifié). En mode 1 le 8254 fonctionne en monostable.

3.1.2.3. Mode 2 : Timer d’intervalle périodique Après le chargement de CR par N, à la prochaine impulsion d’horloge s’effectue le transfert de CR à CE et le décomptage commence. Mais au contraire du mode 1 la sortie reste au niveau haut. Lorsque le compte arrive à 1

Page 55: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 50

elle passe à zéro et y reste pendant une période et retourne à 1. Le décompteur repart alors à partir du compte initial pour un autre cycle identique. On génère ainsi des tops à intervalles réguliers. Le décompte est suspendu par le passage de GATE à 0 et reprend, depuis e compte initial, par son passage à 1.

3.1.2.4. Mode 3 : Générateur d’ondes carrées Ce mode est similaire au mode 2 sauf que OUT passe au niveau bas lorsque la moitié du compte initial est atteinte, soit N/2, et reste dans cet état jusqu’à ce que le compte arrive à 0 et le cycle recommence. Comme pour le mode 2, un niveau 1 sur GATE valide le décompte et un niveau 0 l’inhibe alors qu’un front montant le réinitialise. De ce fait, une valeur impaire amène (N+l)/2 avec sorties au niveau haut et (N-1)/2 au niveau bas. On utilise ce mode pour la génération de Bauds.

3.1.2.5. Mode 4 : Strobe déclenché par logiciel Ce mode est similaire au mode 0 sauf que OUT est au niveau haut pendant le décomptage et produit une seule impulsion négative lorsque le compte devient nul.

3.1.2.6. Mode 5 : Strobe déclenché par matériel (hardware) Après le chargement de CR, un front montant sur GATE fait transférer CR dans CE à la prochaine impulsion d’horloge. Comme dans le mode 4, OUT reste à 1 pendant le décomptage puis passe à 0 pendant une période d’horloge lorsque le compte est nul. GATE peut réinitialiser le décomptage à tout moment.

Sommaire sur les fonctionnalités de la broche Gate

Page 56: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 51

Les modes du 8253

3.2. Procédures de lecture/écriture

3.2.1. Procédure d’écriture Pour la procédure d’écriture, il faut se rappeler de deux conventions :

• Pour chaque compteur, il faut écrire dans l’ordre : le mot de contrôle puis le compte initial. • Le compte initial doit se conformer au format binaire ou BCD indiqué par le mot de contrôle.

Page 57: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 52

3.2.2. Procédure de lecture On distingue deux types de commande : * La commande Counter Latch (CL) : A pour effet de verrouiller, dans le registre OL correspondant, le contenu de l’élément compteur (CE) spécifié par les 2 MSB (bits plus significatifs) du mot de commande suivant

SC1 SC2 0 0 X X X X * La commande Read Back : Elle permet la lecture soit du compte soit du status (validés par 0) du compteur dont le bit est validé par 1 dans le mot de commande suivant

1 1 Count\ Status\ CNT2 CNT1 CNT0 0 Cette commande permet de préparer le mot de status dont le format recopie les 6 bits de faibles poids du mot de contrôle :

Out RW1 RW0 M2 M1 M0 BCD

4. Manipulation

4.1. Exemple

Depuis les schémas électroniques de l’annexe, identifier les circuits 8253, 8259 et le 8255-3. Quelle broche du 8255 est-elle reliée à la broche Gate1 de notre 8253 et quelle broche du 8253 est-elle reliée à l’interruption IR0 du 8259.

Editer le programme ci-dessous : CSR EQU 0FFC8H PORT EQU 0FFCAH COUNT1 EQU 0FFDAH CNT_CSR EQU 0FFDEH CNT3 EQU 3FD6H CPORT3 EQU 3FD4H CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 0 START: CLI MOV AX,CS MOV DS,AX MOV SP,0F000H

Etat du pin out CR CE 0 : chargé 1 : non chargé

Page 58: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 53

MOV AX,0 MOV ES,AX MOV BX,41H*4 MOV ES:WORD PTR[BX],OFFSET COUNT MOV ES:2[BX],CS MOV DX,CSR MOV AL,00010011B OUT DX,AL MOV DX,PORT MOV AL,40H OUT DX,AL MOV AL,00000101B OUT DX,AL MOV AL,11111101B OUT DX,AL MOV AL,80H MOV DX,CNT3 OUT DX,AL MOV AL,0FFH MOV DX,CPORT3 OUT DX,AL I8253: MOV DX,CNT_CSR MOV AL,01110110B OUT DX,AL MOV DX,COUNT1 MOV AX,0FFFFH OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,OFFSET MSG MOV AH,9 INT 21H MOV AX,0 MOV DH,4 INT 10H STI JMP $ COUNT: PUSH AX MOV DX,OFFSET BACK MOV AH,9 INT 21H POP AX INC AX MOV DH,4 INT 10H

Page 59: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du 8253

ISET Mahdia Informatique Industrielle 4ème niveau 54

PUSH AX MOV DX,CSR MOV AL,20H OUT DX,AL POP AX IRET MSG DB 0DH,0AH,9,9,'MTS-86C INTERRUPT COUNTER : $' BACK DB 8,8,8,8,'$' CODE ENDS END START

Identifier la partie d’initialisation du 8259. Quels sont les mots d’initialisation utilisés. Donner les valeurs de chaque mot.

Identifier le mot de contrôle du 8255 ? Quel port a-t-on utilisé ? Identifier le mot de contrôle envoyé vers le 8253. Donner sa valeur en hexadécimal. Déduire le numéro du compteur sélectionné. Déduire le mode utilisé. Déduire le type de comptage (binaire ou BCD). Le chargement et la lecture se fait en premier par MSB ou LSB ? Quelle est la valeur du compte initiale. Que fait alors ce programme ?

4.2. Travail demandé On va s’intéresser dans cette partie du compteur N°0 du 8253. On veut générer un signal carré de fréquence 0.3072 MHz.

Quel est le mode à utiliser pour générer ce type de signal ? Sachant que la fréquence de l’horloge est de 1.2288 MHz, déterminer alors le compte initiale. Donner alors la valeur du mot de contrôle à envoyer vers le 8253. Ecrire le programme en assembleur 8086 correspondant à la génération du signal considéré

Page 60: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Programmation du port série

sous Visual Basic

Objectifs :

L’objectif de cette manipulation est de présenter à l’étudiant les possibilités de Visual Basic à

manipuler le port série en utilisant le contrôle MSComm.

Matériels utilisés :

- Un PC ou compatible doté d’un port de communication série.

- Un câble null-modem.

Logiciels :

- Microsoft Windows.

- Microsoft Visual Basic.

Durée :

3H00mn

Page 61: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du port série sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 56

Manipulation 7 : Programmation du port série sous Visual Basic

1. Présentation du TP

A l’heure de l’Internet haut débit, le port série, avec son débit maximum de quelques dizaines de kilo-octets par seconde, peut sembler inintéressant. Pourtant, il a encore de nombreuses applications : le pilotage de machines industrielles et de mécanismes automatiques se fait encore largement au moyen du port série. Enfin, n’oublions pas que même les routeurs ont un connecteur série qui permet de se connecter à la machine pour la piloter.

Ce TP a donc pour objet de montrer comment communiquer via le port série en Visual Basic.

2. Le Microsoft Comm Control 6.0

Pour gérer le port série, la meilleure façon est d’utiliser le Microsoft Comm Control distribué avec n’importe quelle édition de Visual Basic. Il suffit simplement de le rajouter dans la liste des contrôles de la barre d’outils.

Page 62: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du port série sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 57

Une fois le contrôle rajouté, son icône apparaît dans la barre des contrôles :

Il suffit d’en placer une instance sur la feuille pour pouvoir l’utiliser. Par défaut, ce contrôle s’appellera MSComm1, et on retiendra ce nom pour la suite de l’application :

3. Les propriétés de base du Microsoft Comm Control Une fois le contrôle de communication rajouté, il nous faut le paramétrer. Cela se fait avec les propriétés suivantes : – CommPort : Cette méthode fixe ou retourne le port COM utilisé par le contrôle. La plupart des ordinateurs n’ayant qu’un ou deux ports COM, cette propriété vaudra donc le plus souvent 1 (port COM1: ) ou 2 (port COM2: ). MsComm1.CommPort=1 ‘on utilise le port COM1 – Settings : Cette méthode fixe les caractéristiques de la connexion, à savoir la vitesse de communication, l’utilisation ou non du bit de parité, le nombre de bits de données et le nombre de bits d’arrêt. Cette information est le plus souvent fournie par le constructeur de l’équipement avec lequel vous souhaitez communiquer. Elle est construite de la manière suivante : "vitesse, parité(Y ou N), bits de données, bits de stop" MSComm1.Settings = "9600,N,8,1"

Page 63: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du port série sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 58

Cela signifie que la vitesse de connexion est de 9600 bauds/s, pas de contrôle de parité (Non), il y a 8 bits de données par octet de données (rappelez-vous que les Américains n’en utilisent souvent que 7, parce qu’ils n’ont pas les caractères accentués à gérer), et 1 bit de stop. – PortOpen : cette méthode permet d’ouvrir le port si on la positionne à True et le fermer si on le positionne à False : MSComm1.PortOpen=True 'j’ouvre le port série MSComm1.PortOpen=False 'je ferme le port série Il est important de ne pas oublier de fermer le port série ! Pour être sûr, rajoutez le code suivant dans votre formulaire : Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Comm1.PortOpen=False 'fermeture du port End Sub – OutPut : cette méthode permet d’envoyer des données au port. Bien entendu, il faut au préalable configurer et ouvrir le port. La chaîne envoyée doit être terminée par un retour chariot ( Chr$(13)) ou par un retour chariot + retour ligne (vbCrLf) en fonction de la connexion. Souvent, le seul moyen de savoir lequel choisir consiste à essayer les deux à prendre celui qui marche. MSComm1.OutPut="ATDT 0123456789" On dit ici au modem de composer le numéro 0123456789. – Input : cette méthode permet de recevoir des données sur le port COM. Ici, une explication s’impose : le port série stocke les données arrivant au système dans une mémoire tampon interne qui vaut par défaut 1024 octets. Si la mémoire tampon est saturée et que de nouvelles données arrivent, celles-ci sont perdues. Il est donc impératif de recopier les données dans une chaîne de caractères, par exemple : Dim tampon$ Tampon$ = Tampon$ & MSComm1.Input Bien sûr, cela doit être fait de façon répétitive tant que des données arrivent sur le port. En général, les données se terminent par un caractère de terminaison (si-si!), qui nous fera savoir que la transmission est terminée. Par exemple, on attend ici des données terminées par "OK" suivi de retour à la ligne : Do DoEvents 'indispensable sinon ça marche pas!!! Tampon$ = Tampon$ & MSComm1.Input Loop Until InStr(Tampon$, "OK" & vbCrLf) – InBufferSize : cette méthode fixe ou retourne la taille de la mémoire tampon entrée (donc celle qui contient les données arrivant sur le système), elle vaut par défaut 1024 octets : MSComm1.InBufferSize=2048 Taille_du_tampon=MSComm1.InBufferSize – OutBufferSize : cette méthode fixe ou retourne la taille de la mémoire tampon sortie (donc contenant les données envoyées par le système), elle vaut par défaut 512 octets: MSComm1.OutBufferSize=1024 Taille_du_tampon_entree=MSComm1.OutBufferSize – HandShaking : Cette propriété permet de fixer le mode de « poignée de mains », c’est-à-dire la façon dont la communication est établie au niveau matériel. Elle peut prendre les valeurs suivantes :

Numéro Constante chaîne Utilisation 0 comNone Pas de handshaking matériel. Parfois utilisé, mais globalement rare. 1 comXOnXOff Handshaking par contrôle de flux. Sert surtout dans les terminaux 2 comRTS Utilisé le plus souvent sur le réseau téléphonique. 3 comRTSXonXoff Combinaison des deux précédentes

Page 64: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du port série sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 59

La plupart du temps, la nature du hand-shaking est imposée par le matériel, il faut donc fouiller le manuel de l’équipement ou faire des tests, il n’y a pas de règle universelle…

La communication par événements Le contrôle de communication serait bien rudimentaire et compliqué d’utilisation s’il n’incluait pas une

propriété fondamentale, à savoir la communication événementielle. Le contrôle Comm dispose en effet d’un événement appelé OnComm, qui se déclenche lorsque des données

arrivent sur le port série. Donc, plutôt que de se prendre la tête avec le "Do…Loop" comme tout à l’heure, on place notre code dans l’événement OnComm et on laisse faire le système.

L’événement OnComm sert en fait à plusieurs choses :

– A recevoir les données – A repérer les erreurs – A gérer les événements de signalisation arrivant sur la ligne – A repérer la fin de la transmission

La programmation typique d’un événement OnComm se passe donc de la manière suivante : Private Sub MSComm1_OnComm() Dim tampon as String Select Case MSComm1.CommEvent 'liste des erreurs possibles Case comEventBreak ' On a reçu un signal d’interruption (Break) Case comEventCDTO ' Timeout de la porteuse Case comEventCTSTO ' Timeout du signal CTS (Clear To Send) Case comEventDSRTO ' Timeout du signal de réception Case comEventFrame ' Erreur de trame Case comEventOverrun ' Des données ont été perdues Case comEventRxOver ' Tampon de réception saturé Case comEventRxParity ' Erreur de parité Case comEventTxFull ' Tampon d’envoi saturé Case comEventDCB ' Erreur de réception DCB (jamais vu) ' liste des événements possibles qui sont, eux, normaux Case comEvCD ' Changement dans la broche CD (porteuse) Case comEvCTS ' Changement dans broche CTS Case comEvDSR ' Changement dans broche DSR (réception) Case comEvRing ' Changement dans broche RING (sonnerie) Case comEvReceive ' Si on reçoit des données tampon=MSComm1.Input Call Traitement(tampon) ' Routine de traitement

Page 65: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du port série sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 60

Case comEvSend ' Il y a des caractères à envoyer Case comEvEOF ' On a reçu le caractère EOF End Select End Sub ' Cette procedure sert à traiter l’information reçue dans le tampon Sub Traitement(tampon As String) ' Ici, on affiche le résultat dans un champ de texte Text1.Text=Text1.text & tampon End Sub Oui, ça fait beaucoup de cas d’événements à traiter, et la plupart ne servent quasiment jamais, mais peuvent servir un jour…

4. Manipulation : communiquer avec un autre PC via le port COM

On se propose de développer deux applications pour la liaison PC-PC : la première application sera implémenté sur le PC maître et sera utilisée pour envoyer les données vers le deuxième PC esclave. Les deux machine sera connectée via un câble série Null-modem (voir annexe). On vous donne le code de la première application responsable de l’émission :

Placez un CommControl sur le formulaire Placez une zone de texte et mettez la propriété MultiLine à True. Placez un bouton de commande Mettez le code suivant:

Private Sub Form_Load() Form1.Caption = "App1" With MSCOMM1 'configuration du port .CommPort=1 'On utilise le port COM1: .Handshaking = 2 'RTS .RThreshold = 1 .RTSEnable = True 'mieux pour le port COM: .Settings = "9600,n,8,1" .SThreshold = 1 .PortOpen = True 'ouverture du port End With Command1.Caption = "&Send" Text1.Text = "Ces données ont été envoyés via le port COM" End Sub Private Sub Command1_Click() MSComm1.Output = Text1.Text End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False 'on ferme le port à la fermeture de l'appli End Sub

Page 66: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du port série sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 61

Exécuter alors le code de l’application. La fenêtre suivante doit apparaître sur l’écran :

Créer alors la deuxième application responsable de la réception. Placez un CommControl sur le formulaire. Placez une zone de texte et mettez la propriété MultiLine à True. Redimensionner-le pour qu'il soit assez grand pour afficher plusieurs lignes de texte. Insérer le code.

L’exécution de la deuxième application doit apparaître une fenêtre comme la montre la figure suivante :

Ensuite, exécutez les deux appli (vous aurez besoin de deux instances de VB si vous les exécutez sur le même PC).

Puis, dans App1, cliquez sur Send. Vous verrez alors s'afficher le texte "Ces données ont été envoyés via le port COM" dans la boîte texte de App2. Vous pouvez aussi changer le texte dans App1, puis cliquer sur "Send" et le texte sera envoyé dans App2.

Page 67: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du port série sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 62

5. Annexe

Page 68: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation du port série sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 63

Câble Null-modem

Page 69: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Programmation de l’interface parallèle sous

Visual Basic

Objectifs :

L’objectif de cette manipulation est de présenter à l’étudiant les possibilités de Visual Basic à

manipuler les ports en utilisant une bibliothèque « Inpout32 ». L’expérimentation portera sur

l’utilisation de cette bibliothèque pour commander des diodes via le port parallèle.

Matériels utilisés :

- Un PC ou compatible doté d’un port parallèle.

- Une plaque d’essais et 4 diodes.

- Un connecteur DB25.

Logiciels :

- Microsoft Windows.

- Microsoft Visual Basic.

- La bibliothèque « Inpout32 ».

Durée :

3H00mn

Page 70: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation de l’interface parallèle sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 65

Manipulation 8 : Programmation de l’interface parallèle sous Visual Basic

1. Introduction

Le port parallèle est un outil simple et peu coûteux pour la construction de projets et des dispositifs contrôlés par ordinateur. La simplicité de sa programmation fait du port parallèle le plus populaire dans le monde des amateurs d'électronique. Le port parallèle est souvent utilisé pour le contrôle des robots, la programmation des Atmel/PIC, la domotique, etc...

On se propose alors dans ce TP de présenter des exemples d’interfaçage simple sur port parallèle. On connaît tous le port parallèle, où il peut être trouvé et pour qu’elle raison il est employé. L'utilisation

primaire du port parallèle est de connecter des imprimantes à l'ordinateur et il est conçu pour cette raison. Il est souvent appelé comme le Port Imprimante ou aussi le Port Centronics (ce nom est venu d'une imprimante populaire de la société industrielle « Centronics » qui a inventé quelques standards pour le port parallèle). Vous pouvez identifier le connecteur du port parallèle sur la façade arrière de votre PC. C'est le connecteur à 25 broches femelle (DB25) (auquel l'imprimante est connectée). Sur presque tous les PC seulement un port parallèle est présent, mais vous pouvez en ajouter plus en insérant et des cartes d’extension ISA/PCI.

2. Les modes du port parallèle Le standard IEEE 1284 publié en 1994 définie 5 modes pour le transfert des données sur le port parallèle :

- Mode compatible - Mode Nibble - Mode Octet - EPP - ECP

Tous les informations concernant ces 5 modes de fonctionnement sont disponibles à cette adresse : http://www.fapo.com/ieee1284.htm

3. Hardware Les pins du DB25 sont schématisés sur la figure suivante :

Les lignes sur le DB25 sont en effet divisées en 3 sous groupes :

- Les lignes de données (data bus) - Les lignes de contrôle - Les lignes d’état

Page 71: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation de l’interface parallèle sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 66

Comme l’indique les noms des lignes, les données sont transférées via les lignes des données, les lignes de contrôle sont utilisées pour contrôler le fonctionnement du périphérique connecté, et bien sûr le périphérique émet son état vers l’ordinateur via les lignes d’état. Les signaux du port parallèle sont montrés dans le tableau suivant :

Pin No (DB25)

Signal name Direction Register -

bit 1 nStrobe Out Control-0 2 Data0 In/Out Data-0 3 Data1 In/Out Data-1 4 Data2 In/Out Data-2 5 Data3 In/Out Data-3 6 Data4 In/Out Data-4 7 Data5 In/Out Data-5 8 Data6 In/Out Data-6 9 Data7 In/Out Data-7 10 nAck In Status-6 11 Busy In Status-7 12 Paper-Out In Status-5 13 Select In Status-4 14 Linefeed Out Control-1 15 nError In Status-3 16 nInitialize Out Control-2

17 nSelect-Printer Out Control-3

18-25 Ground - -

Comme vous le saviez les lignes de données, de contrôle et d’état sont connectées à leurs registres respectifs à l’intérieur de l’ordinateur. Ainsi, par la manipulation de ces registres on peut facilement écrire et lire sur le port parallèle avec des langages de programmation comme le « C » ou le « BASIC ». Les registres qu’on peut les trouver sur un port parallèle standard sont :

- Le registre de données - Le registre de contrôle - Le registre d’état

Comme indiqués par leurs noms le registre de données est connecté avec les lignes de données, le registre

d’état avec les lignes d’état et le registre de contrôle avec les lignes de contrôle (le mot ‘connecté’ n’indique pas obligatoirement une connexion physique entre les lignes et les registres. En faite la connexion est virtuelle). Ainsi, si on écrit des données sur ces registres alors celle-ci, c'est-à-dire les données, apparaissent sur les lignes sous forme de voltage. Et inversement, les données envoyées vers le port parallèle peuvent être lues depuis les registres indiqués. Par exemple, si on écrit ‘1’ sur le registre de données ça va se traduire en +5V sur la ligne Data0.

Sur les PC compatibles, ces registres sont implémentés sur des adresses uniques. On doit identifier ces adresses pour programmer le port parallèle. Avec une configuration typique, l’adresse de base de LPT1 est 0x378 et pour le LPT2 l’adresse est fixée à 0x278. Le registre des données réside à cette adresse de base, le registre d’état est affecté à l’adresse de base +1 et le registre de contrôle à +2. Le tableau suivant illustre les adresses de chaque registre pour le LPT1 et LPT2 :

Register LPT1 LPT2 data register(baseaddress + 0) 0x378 0x278status register (baseaddress + 1) 0x379 0x279control register (baseaddress + 2) 0x37A 0x27A

Page 72: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation de l’interface parallèle sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 67

4. Programmation

Presque tous les langages de programmation permettent aux programmeurs d'avoir accès au port parallèle en employant quelques fonctions des bibliothèques standard. Par exemple, Borland C fournissent les fonctions "Inportb" et "Outportb" pour lire ou écrire sur des périphériques d’Entrées/Sorties. Cependant, Visuel Basic n'a pas de fonctions ou de méthodes pour avoir accès au port parallèle directement, mais il est possible d'ajouter de telles capacités en écrivant un dll dans VC + et en appelant ses fonctions exportées vers VB. Toutefois, VC++ fournit deux fonctions pour avoir accès aux périphériques, la fonction '_inp ' pour la lecture et '_outp ' pour l'écriture. Ces fonctions sont déclarées dans "conio.h".

5. La théorie « Inpout32.dll »

Programmer le port parallèle était assez facile avec le vieux DOS et c’était le même avec Win95/98/Me. Nous pourrions employer les fonctions Inporb et outportb ou _inp () et _Outp dans notre programme sans aucun problème si nous exécutons le programme sous DOS ou WIN95/98. Mais avec l’entrée à la nouvelle ère des systèmes d'exploitation NT comme la WIN NT4, WIN2000, WINXP, nous perdons toute cette simplicité. Quand nous essayons d’exécuter un programme employant les fonctions conventionnelles comme Inporb, outportb, _inp () ou _Outp sur un WINNT ou le système WIN2000, il montrera un message d'erreur comme le montre la figure suivante :

Étant un système d'exploitation robuste, le Windows NT assigne quelques privilèges et restrictions aux différents de programmes courants. Il classifie tous les programmes en deux catégories, le mode utilisateur (User Mode) et le mode noyau (Kernel Mode) c'est-à-dire exécution en ring3 mode et en ring0 mode. Les programmes du mode utilisateur s’exécutent en mode ring3 et les programmes du mode noyau s’exécutent en mode ring0. Les programmes que vous écrivez généralement retombent dans la catégorie du mode utilisateur. Les programmes du mode utilisateur sont limités à l'utilisation de certaines instructions comme IN, OUT etc.. Chaque fois que le système d'exploitation constate qu'un programme du mode utilisateur essaye d'exécuter telles instructions, l'exécution s’arrête et le système d'exploitation montrera un message d'erreur. Finalement notre programme d’interfaçage s’arrête là où ils exécutent les instructions IN et OUT pour lire ou écrire des données sur le port parallèle. Mais dans le même temps les programmes de mode noyau ne sont pas limités en exécutant de telles instructions. Cependant, les pilotes de périphériques sont capables de s’appliquer en mode noyau. Donc la solution le susdit problème consiste à écrire un pilote de mode noyau capable de lire et écrire des données sur le port parallèle et permettre aux programmes du mode utilisateur de communiquer avec le LPT. La programmation d’un pilote n'est pas un travail facile même pour des programmeurs expérimentés. Néanmoins, un pilote pour la communication avec le port parallèle est une tâche simple quand des pilotes pour USB, la carte du son etc.. sont concernés.

La particularité de Inpout32.dll est qu’elle peut travailler avec toutes les versions de Windows sans n'importe quelle modification dans le code de l’utilisateur ou dans le DLL lui-même. Cette partie de TP décrit comment elle est réalisée, quelles méthodes de programmation sont employées, qu’elles sont les API utilisées, etc... La Dll vérifie la version de système d'exploitation quand les fonctions sont appelées. Si le système d'exploitation est WIN9X, la DLL utilise alors les fonctions _inp () et _outp pour la lecture / écriture sur le port parallèle. Inversement, si le système d'exploitation est le WIN NT, 2000 ou XP, elle installe un pilote de mode noyau et communique au port parallèle via ce pilote. Le code de l'utilisateur ne sera pas conscient de la version de l’OS sur laquelle il s’exécute. Ce DLL peut être employé dans la version WIN NT comme si c'était WIN9X. L'organigramme ci-dessous montre le fonctionnement de cette bibliothèque :

Page 73: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation de l’interface parallèle sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 68

Les deux blocs constituant la bibliothèque sont :

- Le pilote du mode noyau embarqué dans la Dll. - La Dll elle-même.

Les deux fonctions à utilisées depuis la Inpout32.dll sont :

- « Inp32 », pour lire les données depuis le registre spécifié. - « Out32 », pour écrire des données dans le registre spécifié.

6. Manipulation

6.1. Exemple de programmation

Sous VB créez une nouvelle application. Enregistrer votre projet dans un nouveau répertoire nommé « II4 ». Copier les fichiers « Inpout32.dll » et « hwinterface.ocx » dans ce même répertoire. Ajouter un nouveau module dans votre projet. Dans ce module tapez le code suivant :

Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer

Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Page 74: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation de l’interface parallèle sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 69

Sur la feuille ajoutez deux boutons et deux champs de texte comme le montre la figure suivante:

En code tapez alors les lignes suivantes : Private Sub Command1_Click() ‘ Pour le bouton IN Text2.Text = Str(Inp(Val("&H" + Text1.Text))) ‘Les données lues seront affichées dans la zone End Sub ‘ de texte à droite Private Sub Command2_Click() ‘ Pour le bouton OUT Out Val("&H" + Text1.Text), Val(Text2.Text) ‘Les données saisies dans la zone de texte data End Sub ‘seront envoyées vers l’adresse indiquée

Exécutez le code. Identifier l’adresse du port parallèle de votre PC. Tapez cette adresse dans le champ « Address » et cliquez sur le bouton ‘IN’. Notez alors le résultat. Tapez maintenant une valeur dans le champ « Data » et cliquez sur ‘OUT’. Cliquez maintenant sur ‘IN’ et vérifiez le résultat.

6.2. Programmation On vous propose le schéma électronique suivant :

D1

DIODE

D2

DIODE

D3

DIODE

D4

DIODE

R1R

R2R

R3R

R4R

P1

CONNECTOR DB25

13251224112310229218207196185174163152141

Page 75: Fascicule de Travaux Pratiques Circuits d’Interfacesmakammoun.mypressonline.com/index_fichiers/Supports Pedagogique… · de mieux comprendre les implications pratiques de son cours

Med Ali KAMMOUN Programmation de l’interface parallèle sous Visual Basic

ISET Mahdia Informatique Industrielle 4ème niveau 70

Réalisez sur la plaque d’essais le montage électronique figurant dans le schéma Créez un nouveau projet sous VB qui vous permet d’allumer toutes les diodes. Modifiez le code de votre application pour permettre une commande sélective des diodes (on peut

allumer D1 toute seule, D4 et D3 seulement etc…). Vous devez concevoir une interface logicielle convenable pour l’application.

Améliorer votre application…